ďťż

[PHP][ZendFramework] problem z metodą preDispatch() AbstractCotroller

       

Podstrony


telcocafe

witam Szanownych Forumowiczów,

czy ktoś z Was miał również wyrzucane wyjątki dla klasy AbstractController z ostatniego nr KSE?

po stworzeniu AbstractCotroller wg wskazówek z gazety, następnie po stworzeniu klasy IndexController dziedziczącej po niej, przy otwieraniu storny wyrzuca się wyjatek:
Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'index/common/header.phtml' not found in path (../application/views/scripts/)' in /home/krzymar/public_html/holandia/ZendFramework/library/Zend/View/Abstract.php:856 Stack trace: #0 /home/krzymar/public_html/holandia/ZendFramework/library/Zend/View/Abstract.php(764): Zend_View_Abstract->_script('index/common/he...') #1 /home/krzymar/public_html/holandia/ZendFramework/library/Zend/Controller/Action/Helper/ViewRenderer.php(742): Zend_View_Abstract->render('index/common/he...') #2 /home/krzymar/public_html/holandia/ZendFramework/library/Zend/Controller/Action/Helper/ViewRenderer.php(763): Zend_Controller_Action_Helper_ViewRenderer->renderScript('index/common/he...', NULL) #3 /home/krzymar/public_html/holandia/ZendFramework/library/Zend/Controller/Action.php(207): Zend_Controller_Action_Helper_ViewRenderer->render(NULL, NULL, false) #4 /home/krzymar/public_html/holandia/application/controllers/IndexController.php(18): Zend_Controller_Action->render() # in /home/krzymar/public_html/holandia/ZendFramework/library/Zend/View/Abstract.php on line 856

kod sprawdzałem już 3 razy - nie widzę błędu... więc proszę o pomoc Was.

CO jest w tym wszystkim dziwne, że po wykomentowaniu metody preDispatch(), metoda postDispatch() działa poprawnie... (ściażka do szablonów, które mają zostać wyświetlone jest identyczna....)

Oto kody:
index.php:
<?php /** set_include_path('../ZendFramework/library'.PATH_SEPARATOR.'../'.PATH_SEPARATOR. get_include_path()); require_once 'Zend/Controller/Front.php'; require_once( 'application/controllers/AbstractController.php' ); $controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory('../application/controllers'); $controller->throwExceptions(true); $controller->dispatch(); ?>

AbstractCotroller
<?php /** * AbstractController, a controller which is a parent of any other controler in the site. * Gets together all common code to make the source more readable and easier to maintain. * * @author Marcin Krzych * @copyright 2007, Marcin Krzych * @version 1.0 */ require_once "Zend/Controller/Action.php"; require_once( 'Zend/Session.php' ); require_once( 'Zend/Date.php' ); require_once( 'Zend/Log.php' ); require_once( 'Zend/Log/Writer/Stream.php' ); abstract class AbstractController extends Zend_Controller_Action { private static $header = false; protected static $session; protected static $date; protected static $logger; /** * Prepares some objects and variables for avery controller in the site in each controllers construct. * This method is called automatically. */ public function init() { if(empty(self::$session)) self::$session = new Zend_Session_Namespace('www.e-holland.eu'); if(empty(self::$date)) self::$date = new Zend_Date(); if(empty(self::$logger)) self::$logger = new Zend_Log(new Zend_Log_Writer_Stream('../_log/'.str_replace('00:00:00','',self::$ date->getDate()).'.log')); } /** * renders header */ public function preDispatch() { $this->render('common/header',null,true); } /** * renders footer */ public function postDispatch() { $this->render('common/footer',null,true); } } ?>

header.phtml
<?php echo 'xml version="1.0" encoding="UTF-8"'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" > <head> <title><?php echo $this->meta['title']; ?>Holandia - wszystko o ...</title> <meta name="keywords" content="<? echo $this->$meta['keywords']!=null ? $this->$meta['keywords'] : '' ; ?>" /> <meta name="description" content="<? echo $this->$meta['description']!=null ? $this->$meta['description'] : '' ; ?>" /> <meta name="author" content="Marcin Krzych" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="./styles/orange.css" title="Orange" /> </head> <body>



Czy na pewno masz wszystko dobrze z katalogami? W błędzie jest napisane,że szuka pliku index/common/header.phtml natomiast w artykule jest ścieżka views/common/header.phtml. Chyba że sam ją zmieniłeś . . .

no właśnie w tym problem jest, że mam pliki poukładane jak w KSE, plik header.phtml jest w tym samym folderze co footer.phtml...

Wersja ZendFrameworka to 1.0.1.... może w tej wersji jest jakiś bug...

wrzuc pliki szablonow do katalogow i takiej formie : kontroler/akcja.phtml i spr czy dziala
Użytkownik Bełdzio edytował ten post 13 sierpień 2007, 10:44


tak, działa, dla metody postDIspatch() też wszsytko jest ok, lecz tylko preDispatch się dziwnie zachowuje....

będę wdzięczny za wszelką pomoc, bo nei bardzo mi się uśmiecha do każdego widoku dodawać te same linijki odpowiedzialne za nagłówki html (sekcja head) a mi się już pomysły skończyły....

try np: $frontController -> setParam('noViewRenderer', true);

niestety.... wtedy wywala mi wyjątki gdzie indziej.....

zapytam więc inaczej: czy ktoś przerobił artykuł i może udostępnić swoje kody - zebym porównał ze swoimi....

[edit]
po kilku modyfikacjach (sciezki do includowanych plików - set_include_path jednak nie robił tego co myslałem....) i radzie Bełdzia zaczęło działać. :D dzieki za pomoc
Użytkownik Krzymar edytował ten post 14 sierpień 2007, 22:12
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.