Zobacz pełną wersję : kilka kontrollerow pomoc
bigos1989
27-06-2012, 11:37
witam
ostatnio zaczalem sie bawić w tworzenie komponentów i korzystałem z poradnika na wiki. jednak problem sie pojawił gdy chciałem dodać kolejne kontrolery i modele z wodokami dla tego kontrolera.
w głownym widoku (głowna lista z pozdrowieniami)mam przekierowanie na nowy kontroler( kolumna w kotreej jest bla bla) a co za nim idzie - widok, jednak nie chce mi sie on wczytać.
Byłbym wdzieczny gdyby ktos mogł spojrzec w kod (backend)i mi wyjaśnic gdzie robie błąd, bo nie ukrywam, ze to troche uciazliwe i moge isc dalej.
ponizej zalaczam paczke z moimi wypocinami
http://speedy.sh/6VzXN/com-hello4-01.zip (http://speedy.sh/mduek/com-hello4-01.zip)
wiem, ze pewnie nikomu sie nie bedzie zbytnio chcialo sprawdzac, dlatego powiem, ze jest tego naprawde niewiele, a dlaa wprawnego oka nie powinno to zajac wiecej niz 3 minut. Bardzo prosze o pomoc
Zawsze zastanawia mnie jak ktoś, komu z czymś nie wychodzi szacuje, że ogarnięcie tego innej osobie zajmie, w tym przypadku 3 minuty??
Albo też ciekawe jest, jak ktoś nie jest w temacie "ale uporanie się z tym powinno zająć X czasu" :)
No ok, dosyć marudzenia, podbijam, jak dla mnie, dla wprawnego oka nie powinno to zająć więcej niż 2 minuty.
---------- Post dodany o 14:58 ---------- Poprzedni post był o 14:52 ----------
Nie wiem czy o to Tobie chodziło, bo dosyć chaotycznie napisałeś ale przed display możesz określić do jakiego widoku i layout'u ma przejść
JRequest::setVar('view', 'nazwa_widoku');
JRequest::setVar('layout','nazwa_szablonu');
bigos1989
30-06-2012, 10:39
mam takie cudo, jednak nadal mi nie działa... byłbym bardzo wdzieczny gdyby ktos mogł sprawdzic kod
bigos1989
06-07-2012, 12:24
ponawiam prosbe :(
To może opisz jeszcze raz dokładnie czego oczekujesz. Bo z powyższego opisu oraz paczki mało wynika.
bigos1989
09-07-2012, 11:18
dobrze ;] zacząłem więc robić komponent na podstawie http://wiki.joomla.pl/index.php/Projektowanie_komponentu_wed%C5%82ug_wzorca_Model-Widok-Kontroler_-_Cz%C4%99%C5%9B%C4%87_1
generalnie spoko wszystko wyszło, ale stwierdziłem, ze chcę go trochę rozbudować i dodać nowy kontroller, model i widok. W tym pierwszym głównym widoku zrobiłem odniesienie/linka/przekierowanie na nowy kontroller ktory stworzyłem. Zmienna odpowiedzialna za przekierowanie wyglada w ten sposób
$fields = JRoute::_( 'index.php?option=com_hello&controller=nowy' );
sam kontroler nowy wyglada nastepująco :(narazie nie ma robic nic poza wczytaniem widoku dla niego okreslonego)
class HelloControllerNowy extends JController
{
/**
* constructor (registers additional tasks to methods)
* @return void
*/
function __construct()
{
parent::__construct();
}
/**
* display the edit form
* @return void
*/
function display() {
JRequest::setVar('view', 'nowy');
JRequest::setVar('layout','default');
parent::display();
}
model:
class HelloModelNowy extends JModel
{
function pobierzDane()
{
$dane = "Jakis przykładowy tekst!";
return $dane;
}
}
view
class HelloViewNowy extends JView
{
function display($tpl = null)
{
$model =& $this->getModel();
$dane = $model->pobierzDane();
$this->assignRef( 'mojedane', $dane );
parent::display($tpl);
}
}
szablon
<?php
defined('_JEXEC') or die('Restricted access');
?>
<h1><?php echo $this->mojedane; ?></h1>
generalnie nie mam pomysłu gdzie jest błąd... jedyne to mi przychodzi do głowy, to to, ze po mogłem pomieszać nazwy klas...
paczka z plikami http://speedy.sh/NAas3/com-hello4-01.zip
Nie wiem czy to poprawne rozwiązanie ale ja robiłem to tak:
1. controller.php
class HellosController extends JController {
function __construct() {
parent::__construct();
$this->setRedirect('index.php?option=com_hellos&controller=hello');
}
}
A później odwołujesz się do drugiego kontrolera tak:
index.php?option=com_hellos&controller=nowy
Witam moze juz dales sobie spokuj ale jak cos to takie ale:
classa nowy ma sie zaczynac tak
class HellosController.........
//tak samo
class HellosModel.........
class HellosView.......
dodatkowo twoja class HelloControllerNowy nie jest zamknieta brakuje }
tak odpalasz
// Create the controller
$classname = 'HellosController'.$controller;
$controller = new $classname( );
czyli jak dasz
index.php?option=com_hello&controller=nowy to bestia szuka
HellosControlerNowy i nie znajdzie takiej classy
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!