PDA

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

Craft
27-06-2012, 14:58
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 :(

Craft
06-07-2012, 12:26
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

Craft
09-07-2012, 22:01
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

EkleErs
28-07-2012, 16:30
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