Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] zmiana randerowanego pliku
Forum PHP.pl > Forum > PHP > Frameworki
bmL
Witam, dopiero raczkuję w Zendzie. Mam dość typowy problem na który niestety nie mogę znaleźć rozwiązania, a dla osoby która siedzi w zendzie pewnie nie będzie żadnym problemem podpowiedzieć mi w tej kwestii.

Otóż chciałbym wszystkie akcje w danym kontrolerze opakować w jeden widok, najprościej będzie wytłumaczyć jak wkleję kod który już nastukałem:
  1. public function init() {
  2. $this -> _helper -> viewRenderer -> setNoRender(true);
  3. $this -> _forward($this -> _request -> getActionName());
  4. $this -> _rander();
  5. }
  6.  
  7. private function _rander() {
  8. $this -> render('index');
  9. }
  10.  
  11. public function indexAction() {
  12. $this -> view -> var = 'index';
  13.  
  14. }
  15.  
  16. public function testAction() {
  17. $this -> view -> assign('var', 'test');
  18. }

Chcę wszystkie akcje przepuścić przez index.phtml i do niego ewentualnie doklejać inne instancje widoków. Problem twki w tym że w ten sposób nie mogę przypisać zmiennych do widoku. Wygląda na to że $this -> view i $this -> rander() nie są ze sobą powiązane. W takim razie moje pytanie brzmi jak uzyskać taki (działający) efekt?
W tym rozwiązaniu jak w pliku index.phtml wpiszę <?php echo $this -> var?> to wartość nie zostaje wyświetlona...
Eagle
Przenieś zawartość funkcji _rander() do

  1. public function postDispatch()
  2. {
  3. }

Zostanie ona wywołana po skończeniu danej akcji.
Fukncję init() możesz skasować.
Diwi
Cytat
Chcę wszystkie akcje przepuścić przez index.phtml i do niego ewentualnie doklejać inne instancje widoków


A to nie lepiej wykorzystać po prostu helper layout ?
bmL
Właśnie nie, bo layout mam już wykorzystany a chodzi o to że chcę mieć dodatkowe submenu tylko dla tego kontrolera.
Cytat(Eagle @ 11.05.2011, 15:30:36 ) *
Przenieś zawartość funkcji _rander() do

  1. public function postDispatch()
  2. {
  3. }

Zostanie ona wywołana po skończeniu danej akcji.
Fukncję init() możesz skasować.

Działa, dzięki wielkie smile.gif
melkorm
  1. $this->_helper->viewRenderer->setScriptAction('index');


W init.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.