2009-11-05 9 views
13

W Zend widzenia pomocnika, istnieje url function() do wyprowadzania URL na podstawie tabel routingu npOdpowiednik url() funkcji pomocniczej w kontroler Zend

$this->url(array('controller' => 'comments', 'action' => 'add') 

jaki sposób można zrobić to samo w kontrolerze? W szczególności chcę, aby ustawić adres URL działania dla Zend Form użyciem składni kontroler/działania, zamiast standardowego adresu URL np

$form = new Zend_Form; 
$form->setMethod('post')->setAction($this->url(array('controller' => 'comments', 'action' => 'add'))); 

Odpowiedz

23

Istnieje pomocnik czynnościowy: Zend_Controller_Action_Helper_Url. Wewnątrz kontrolera akcji, można do niego dostęp za pomocą:

$this->_helper->url($action [, $controller [, $module [, $params]]]); 

lub:

$this->_helper->url->url(array(...)); 

Alternatywnie, można również użyć pomocnika widoku:

$this->view->url(...); 
+0

Jeśli nazywam '$ this -> _ helper-> url (array ('controller' => 'index', 'action' => 'download'))' poza IndexControllerem (tutaj AjaxController) zwraca * '/ ajax/Array "* co zrobiłem źle? Czy to błąd? – lony

+2

Użyj '$ this -> _ helper-> url ('download', 'index')' lub '$ this -> _ helper-> url-> url (array ('controller' => 'index', 'action' = > "pobierz")) '. Zaktualizuję odpowiedź i doda link do dokumentów API. –

2

był w stanie odpowiedzieć na moje własne pytanie, jak się wydaje następujący kod załatwia sprawę: -

$form = new Zend_Form; 
$form->setMethod('post')->setAction($this->getHelper('url')->url(array('controller' => 'index', 'action' => 'add'))); 
+1

Teraz używam '$ this-> view-> url (array ('kontroler' => 'index', 'działania' => 'pobieranie')), a nie' fajnie, ale działa wewnątrz kontrolera. – lony

3

ja faktycznie okazało się, tylko to działa:

// in your form 
public function init() 
{ 
    $router = Zend_Controller_Front::getInstance()->getRouter(); 
    $url = $router->assemble(
     array(
      'paramterName0' => 'parameterValue0', 
      'paramterName1' => 'parameterValue1', 
     ), 
     'routeName' 
    ); 

    $this->setAction($url); 
    ... 
} 
0

W zf3 można użyć:

$form = new YourFormClass(); 
    $form->setMethod('post')->setAction($this->url()->fromRoute(array('controller' => 'index', 'action' => 'add')); 
Powiązane problemy