2009-11-05 11 views
13

Nella vista aiutante Zend, c'è la funzione URL() per emettere un URL in base alle tabelle di routing ad esempioequivalente di url() funzione di supporto in Zend regolatore

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

Come posso fare la stessa cosa in un controller? In particolare voglio impostare l'URL azione per un modulo Zend utilizzando la sintassi del controller/azione piuttosto che un esempio URL standard

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

risposta

23

Per questo esiste un helper di azioni: Zend_Controller_Action_Helper_Url. All'interno di un controller di azione, è possibile accedervi utilizzando:

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

o:

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

In alternativa, è possibile anche utilizzare la vista helper:

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

Se chiamo '$ this -> _ helper-> url (array ('controller' => 'index', 'action' => 'download'))' al di fuori di IndexController (qui AjaxController) restituisce * '/ ajax/Array '* cosa ho fatto di sbagliato? o è un bug? – lony

+2

Usa '$ this -> _ helper-> url ('download', 'index')' o '$ this -> _ helper-> url-> url (array ('controller' => 'index', 'action' = > 'download')) '. Aggiornerò la mia risposta e aggiungerò un link ai documenti API. –

2

era in grado di rispondere alla mia domanda come sembra il seguente codice fa il trucco: -

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

Io uso '$ this-> Visualizza-> url (array ('controllore' => 'index', 'azione' => 'download'))', non bello ma funziona all'interno del controller. – lony

3

in realtà ho scoperto che solo questo funziona:

// 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

In ZF3 è possibile utilizzare:

$form = new YourFormClass(); 
    $form->setMethod('post')->setAction($this->url()->fromRoute(array('controller' => 'index', 'action' => 'add')); 
Problemi correlati