首页 文章

Zend Framework 2 - 处理表单操作

提问于
浏览
1

在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');
    }

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

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

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

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

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

1 回答

  • 2

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

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

相关问题