zend_form:我应该在布局中使用一个权限

jbl*_*lue 2 php zend-framework zend-form

我通常在一个动作中实例化我的表格,这是我在提交时处理它们的地方.然后我将它们传递给视图并像往常一样输出它们.

此表单(搜索框)不同,因为它不是单个页面的一部分.它必须随处可见.我已经把它作为模板的一部分layout.phtml并实例化并在那里访问它.

$search = new SearchForm(); 
echo $search;
Run Code Online (Sandbox Code Playgroud)

表格打印得很好但现在的问题是我在哪里处理这个表格.我通常在动作中有这样的处理代码.

    if ($this->_request->isPost()) {
        //and form is valid
        //process the data            
    }
Run Code Online (Sandbox Code Playgroud)

但由于这种形式是普遍的,因此没有任何行动.我该怎么处理?

我是不是该:

  • 为它创建一个虚拟动作(这没有意义,因为表格无处不在)
  • 或者我应该将处理代码直接放入layout.phtml(我认为这是不好的MVC实践,因为我现在混合处理表单与视图).

我该怎么办?有什么建议吗?

Tim*_*ain 5

当然搜索将需要一些处理代码来构建结果,所以我会在某个通用的地方创建这个动作(比如在你的IndexController上)并指向那个表格.即使表单在每个页面上,您也可以将其指向特定的URL,例如/ search /.

否则,您可以创建一个控制器插件来检查请求是否已经提交,然后运行处理代码.