In the Zend view helper, there is the function url() for outputting a URL based on the routing tables eg
$this->url(array('controller' => 'comments', 'action' => 'add')
How can I do the same thing in a controller? In particular I want to set the action URL for a Zend Form using controller/action syntax rather than a standard URL eg
$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->url(array('controller' => 'comments', 'action' => 'add')) );
There is an action helper for this: Zend_Controller_Action_Helper_Url
. Inside an action controller, you can access it using:
$this->_helper->url($action [, $controller [, $module [, $params]]]);
or:
$this->_helper->url->url(array(...));
Alternatively, you can also use the view helper:
$this->view->url(...);
I've actually found out that only this works:
// in your form
public function init()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
$url = $router->assemble(
array(
'paramterName0' => 'parameterValue0',
'paramterName1' => 'parameterValue1',
),
'routeName'
);
$this->setAction($url);
...
}
Was able to answer my own question as it seems the following code does the trick:-
$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->getHelper('url')->url(array('controller' => 'index', 'action' => 'add')) );
In zf3 you can use:
$form = new YourFormClass();
$form->setMethod('post')->setAction($this->url()->fromRoute(array('controller' => 'index', 'action' => 'add'));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With