在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动作从未执行过?
我也知道我可以硬编码动作属性并让段路由处理处理,或者我甚至可以为此定义自己的路径。
在什么情况下,表格行动应该有自己的路线? 在什么情况下,应使用分段路径处理表单操作? 在什么情况下应该像我的例子一样处理表单操作?
如果没有严格的规则:不同的方法有什么意图沟通?
是否也可以在控制器而不是视图中添加表单操作?
答案 0 :(得分:2)
继续评论:这不是URL帮助程序的工作原理 - 如果省略第一个参数,则使用当前路径。这可能就是为什么你没有得到你期望的表单行为。
就个人而言,我总是在使用URL帮助时指定路由名称 - 使事情更清楚。