[英]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.