在Zend视图助手中,有一个函数url(),用于根据路由表输出URL,例如
$this->url(array('controller' => 'comments', 'action' => 'add')
如何在控制器中执行相同的操作?特别是我想使用控制器/动作语法而不是标准URL(例如
)来设置Zend表单的操作URL$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->url(array('controller' => 'comments', 'action' => 'add')) );
答案 0 :(得分:23)
有一个动作助手:Zend_Controller_Action_Helper_Url
。在动作控制器内部,您可以使用以下方式访问它:
$this->_helper->url($action [, $controller [, $module [, $params]]]);
或:
$this->_helper->url->url(array(...));
或者,您也可以使用视图助手:
$this->view->url(...);
答案 1 :(得分:3)
我实际上发现只有这个有效:
// in your form
public function init()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
$url = $router->assemble(
array(
'paramterName0' => 'parameterValue0',
'paramterName1' => 'parameterValue1',
),
'routeName'
);
$this->setAction($url);
...
}
答案 2 :(得分:2)
能够回答我自己的问题,因为看起来以下代码可以解决问题: -
$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->getHelper('url')->url(array('controller' => 'index', 'action' => 'add')) );
答案 3 :(得分:0)
在zf3中,您可以使用:
$form = new YourFormClass();
$form->setMethod('post')->setAction($this->url()->fromRoute(array('controller' => 'index', 'action' => 'add'));