czwartek, 21 sierpnia 2008

Zend_View_Helper_Action jako aplet + Zend_View_Helper_Url = niespodzianka

Wykorzystując Zend_View_Helper_Action w layout-cie (jako aplet w layout)


$this->action('list','index','calendar', array('rowCount' => 5));


dostałem wyjątek

Zend_Controller_Router_Exception: module is not specified in ..


O co chodzi?
Na początku anializy myślałem że jest błąd w tym helperze i dispachowaniu akcji ale naszczęście się myliłem. Rozwiązanie problemu okazało się dużo bardziej trywialne jak i zaskakujące!

Wykorzystując pomocnik widoku Zend_View_Helper_Url w pliku widoku dla wywoływanej akcji (czyli list.phtml) nie można korzystać z "skróconej" wersji generowani url!

tj. zamiast

$this->url(array('action' => 'display','id' => $row->id),'frontend')

należy stosować pełny zapis

$this->url(array('module' => 'calendar','controller' => 'index','action' => 'display','id' => $row->id),'frontend')


EDIT:
Można stosować skróconą wersję pomocnika widoku dla akcji tylko 2gi parametr określający url w/w przykładzie nie może być 'frontend' tylko musi być domyślnym tj. musi zostać pominięty

dixi.

Brak komentarzy: