PDA

Zobacz pełną wersję : Komponent nie wywołyje widoku.



lowcasz
08-08-2011, 23:01
Długo zastanawiałem się gdzie umieścić ten temat jeśli nie trafiłem to przepraszam.

Mam mianowicie taki problem, uczę się tworzyć własne komponenty Joomla i coś mi nie idzie. Controller nie wywołuje żadnego widoku. Jeżeli wstawię parent::display() zwraca błąd 500 nie wiem, czy to jest powiązane, czy też coś osobnego, ale narazie gdy wstawiam normalnie zmienną view wszystko jest ok. Poniżej zamieszczę kody źródłowe, są one banalne coś na zasadzie Witaj Świecie. Na stronie wyświetla mi się jedynie jej ogólna szata i napis wywoływany przez echo z Controllera, a powinny jeszcze z widoku i szablonu, do Modeli jeszcze nie doszedłem.


Plik komponentu:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once( JPATH_COMPONENT.DS.'controller.php' );
if($controller == JREquest::getWord('controller')) {
$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'. php';
if(file_exists($path)) {
require_once $path;
}
else {
$controller = '';
}
}
$classname = 'MvcController'.$controller;
$controller = new $classname();
$controller->execute( JRequest::getVar( 'task' ) );
$controller->redirect();

?>

Controller:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller') ;

class MvcController extends JController {

function __construct() {
parent::__construct();
}

function display() {
echo 'Funkcja domyślna. XD<br />';
//parent::display();
JRequest::setVar('view', 'mvc');
}

function wypisz() {
echo 'Witaj świecie!';
}
}
/*
Wywoływanie widoków i szablonów
JRequest::setVar('view', 'nazwa_widoku');
JRequest::setVar('layout','nazwa_szablonu');
*/
?>

Widok /views/mvc/view.html.php:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.application.component.view');

class MvcViewMvc extends JView {

function display($tpl = null) {
$dane = 'Zmienna widoku dla szablonu';
$this->assignRef( 'mojedane', $dane );
echo 'Tekst z widoku<br />';
parent::display($tpl);
}
}


?>

Szablon views/mvc/tmpl/default.php
<?php defined('_JEXEC') or die('Restricted access'); ?> <h1><?php echo $this->mojedane; ?></h1>


Z góry dziekuję za pomoc i dobre chęci! :)