2009-11-05 6 views
13

Im Zend View Helfer gibt es die Funktion url() für eine URL ausgibt, basierend auf den Routing-Tabellen zBEquivalent von url() Hilfsfunktion in Zend Controller

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

Wie kann ich das gleiche tun in einer Steuerung? mit controller/action Syntax eher als eine Standard-URL zB Insbesondere möchte ich die Aktion URL für eine Zend-Formular setzen

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

Antwort

23

Es gibt eine Aktion Helfer für diese: Zend_Controller_Action_Helper_Url. Innerhalb eines Regler können Sie darauf zugreifen mit:

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

oder:

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

Alternativ können Sie auch den View Helfer verwenden:

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

Wenn ich '$ this -> _ helper-> url (array ('controller' => 'index', 'action' => download ')' außerhalb des IndexControllers (hier AjaxController) aufruft, gibt es *'/ajax/Array * Was habe ich falsch gemacht? Oder ist es ein Fehler? – lony

+2

Verwenden Sie '$ this -> _ helper-> url ('download', 'index')' oder '$ this -> _ helfer-> url-> url (array ('controller' => 'index', 'aktion' = > 'Herunterladen')) '. Ich werde meine Antwort aktualisieren und einen Link zu den API-Dokumenten hinzufügen. –

2

der Lage war, auf meine eigene Frage zu beantworten, wie es der folgende Code scheint funktioniert der Trick: -

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

Ich verwende jetzt '$ this-> view-> url (array ('Controller' => 'index', 'action' => 'Download'))', nicht Schön, aber arbeitet in der Steuerung. – lony

3

habe ich festgestellt tatsächlich aus dass nur das funktioniert:

// 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 können Sie:

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