Zend Framework 2 - 处理表单操作

时间:2014-08-11 22:28:54

标签: php forms zend-framework2 zend-form2

在Zend Framework 2中,我创建了一个扩展名为Zend\Form\Form的{​​{1}}的类。

在一个Controller类的MyForm中,我会像这样初始化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();

然后在我的IndexController里面的go动作中,我只需要进行测试:

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

这根本不起作用,我总是再次登陆表单视图(==索引操作)。为什么go动作从未执行过?

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

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

如果没有严格的规则:不同的方法有什么意图沟通?

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

1 个答案:

答案 0 :(得分:2)

继续评论:这不是URL帮助程序的工作原理 - 如果省略第一个参数,则使用当前路径。这可能就是为什么你没有得到你期望的表单行为。

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