Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] $this-action(), problem z przekazaniem zmiennej
Cezar708
post
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


witam mam kontroler:
  1. <?php
  2. class TestController extends Zend_Controller_Action {
  3. public function fooAction(){
  4. $this->view->tablica = array(1,2,3,4,5);
  5. }
  6. }
  7. ?>


nastepnie w index.phtml mam:
  1. <?php echo $this->action('foo', 'test'); ?>


a w templacie foo.phtml mam:
  1. <?php
  2. var_dump($this->tablica)
  3. ?>


niestety wynikiem działania skryptu jest:
Kod
null


co nie tak robię z przekazaniem parametru 'tablica' do widoku? Jaki popełniam błąd?

Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(teutates @ 9.05.2008, 20:16:13 ) *
Chyba cos namieszales, u mnie to co masz w pierwszym poscie dziala doskonale.


no wiem, że coś jest namieszane (stąd ten wątek), ale ja nic nie zmieniałem w kodach Zenda, wszystko jest takie same jak po ściągnięciu (Zend Framework 1.5.1).

Mam kolejny trop.... w pliku: Zend/View/Helper/Action.php jest kod funkcji action():

  1. <?php
  2. public function action($action, $controller, $module = null, array $params = array())
  3. {
  4. $this->resetObjects(); 
  5. if (null === $module) { 
  6. $module = $this->defaultModule; 
  7. } 
  8.  
  9. // clone the view object to prevent over-writing of view variables
  10. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
  11. $viewRendererViewObj = $viewRenderer->view;
  12. $viewRenderer->view = $this->cloneView(); 
  13.  
  14. $this->request->setParams($params) 
  15. ->setModuleName($module) 
  16. ->setControllerName($controller) 
  17. ->setActionName($action) 
  18. ->setDispatched(true); 
  19.  
  20. $this->dispatcher->dispatch($this->request, $this->response); 
  21.  
  22. // reset the view object to it's original state
  23. $viewRenderer->view = $viewRendererViewObj;
  24.  
  25. if (!$this->request->isDispatched() 
  26. || $this->response->isRedirect()) 
  27. { 
  28. // forwards and redirects render nothing 
  29. return ''; 
  30. } 
  31.  
  32. $return = $this->response->getBody();
  33.  
  34. return $return;
  35. }
  36. ?>


i jeśli zakomentuję linię (tu linię 12):
  1. <?php
  2. // $viewRenderer->view = $this->cloneView();
  3. ?>


wszystko zaczyna działać tak jak powinno.

macie może pomysł dlaczego tak się dzieje?

Pozdrawiam


~EDIT
Dobra znalazłem na Zendowskiej JIRA zagadnienie o tej samej treści co moje, na razie jest otwarte, a poprawka ma wyjść przy następnym release frameworka.

Jest w helperze widoku action() pewien problem z klonowaniem obiektu Zend_View, po prostu źle to robią i w niektórych przypadkach (vide powyższy) dane są źle przekazane do widoku.

Dopóki nie wyjdzie nowy release napisałem własnego helpera, który w prawidłowy sposób przekazuje zmienne do renderowanego widoku.

Temat najprawdopodobniej jest wyczerpany.


Pozdrawiam
Cezar708

Ten post edytował Cezar708 14.05.2008, 16:06:28
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 08:32