Zend控制器中的url()辅助函数的等价物

时间:2009-11-05 14:13:56

标签: php zend-framework zend-form

在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')) );

4 个答案:

答案 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'));