繁体   English   中英

Zend Framework 2-处理表单操作

[英]Zend Framework 2 - handling form actions

在Zend Framework 2中,我创建了一个扩展Zend\\Form\\Form的类,称为MyForm

在一个Controller类的indexAction中,我将像这样初始化MyForm

 public function indexAction()
 {
     $form = new MyForm('my-name');
     $viewModel = new ViewModel(array('form' => $form));
     return $viewModel;
 }

然后在相应的视图中,我基本上只是做

$form = $this->form;
$form->prepare();

echo $this->form()->openTag($this->form);
echo $this->formCollection($form);
echo $this->form()->closeTag();

所有这些都可以,但是您可能已经注意到该表单的操作丢失了。

我试图在视图中添加这样的操作:

$form->setAttribute('action', $this->url(NULL, array('controller'=>'Index', 'action' => 'go')));

然后在我的IndexController内部的go动作中,我只是要进行测试:

    public function goAction()
    {
        die('huh');
    }

这根本没有用,我总是再次进入表单视图(== index action)。 为什么永不执行go操作?

我也知道我可以硬编码action属性并让段路由处理该处理,或者甚至可以为此定义一个自己的路由。

在什么情况下,表单动作应该有自己的路线?
在什么情况下应使用分段路线处理表单动作?
在什么情况下,应该像我的示例一样处理表单操作?

如果没有硬性规定:不同方法传达什么意图?

是否还可以在控制器而不是视图中添加表单操作?

从注释继续:URL助手不是这样的-如果省略第一个参数,则使用当前路由。 这可能就是为什么您没有得到您期望的表单操作的原因。

就个人而言,我总是在使用URL辅助程序时指定路由名称-使事情更清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM