在Zend中将action参数设置为form

时间:2011-03-19 08:25:19

标签: php zend-framework zend-form

我正在使用“Zend表单”。我该怎么做才能在我的FORM标签中获得正确的“action”参数?
例如,在 indexAction 中的 SearchController 中使用的表单 Form_Search 。我应该在哪里以及如何将action参数设置为form “/ my / app / directory / search / index”

更新:“action”参数应该与表格假定未设置相同。我只需要FORM中的param来简化JS编码。

4 个答案:

答案 0 :(得分:4)

您可以使用Zend_Form的setAction方法,例如:

$yourForm->setAction('/my/app/directory/search/index');

希望这就是你要找的东西。

编辑: 您可以使用$ this-> getRequest()方法在操作中检索有关请求的许多信息,该方法返回Zend_Controller_Request_Http的实例。例如,如果要获取basePath以及BaseUrl和QueryString之间的所有内容,您可以执行以下操作:

    $infoPath = $this->getRequest()->getPathInfo();
    $basePath = $this->getRequest()->getBaseUrl();

    $yourForm->setAction($basePath . $infoPath);

Zend_Controller_Request_Http有其他可能对您有用的方法。

答案 1 :(得分:2)

您可以使用url()视图助手来创建操作网址。

$view->url(array(
    'module'     => 'mymodule',
    'controller' => 'mycontroller',
    'action'     => 'myaction',
    'param1'     -> 'myvalue1',
    // etc
), 'default'); 
// 'default' here refers to the default route. 
// If you specify a custom route, then that route will be used to 
// assemble() the url.

根据您致电$form->setAction()的地方,您可以通过不同方式访问$view

在控制器中:$this->view

在表单中:$this->getView()

在视图脚本中:$this

在视图助手中展开Zend_View_Helper_Abstract$this->view

希望它有所帮助!

答案 2 :(得分:1)

只是对以前答案的补充。 “行业标准方法”的种类是在同一页面上呈现/验证/处理表格。然后没有必要设置操作,因为它填充了当前URL。

例外是布局中的serch字段。然后使用$form->setAction($url)。但请始终记住回显搜索操作中的表单。如果表单值无效,ZF会指望您在页面中显示错误。或者您可以使用$form->getErrors()

答案 3 :(得分:0)

            `$this->setAttribs(array(
                'accept-charset' => 'utf-8',
                'enctype' => Zend_Form::ENCTYPE_URLENCODED,
                'method' => 'get',
                'action' => '/controller/action/param/attr'
            ))`