我正在使用“Zend表单”。我该怎么做才能在我的FORM标签中获得正确的“action”参数?
例如,在 indexAction 中的 SearchController 中使用的表单 Form_Search 。我应该在哪里以及如何将action参数设置为form “/ my / app / directory / search / index”?
更新:“action”参数应该与表格假定未设置相同。我只需要FORM中的param来简化JS编码。
答案 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'
))`