2011-04-11 50 views
0

我使用的形式帮助创建我的形式给出了不同的值,因此被自动指定形式的作用....我不指定形式的行动,但它(自动),在某些情况下

这种形式用于编辑帖子..
因此,该URL的结构为:mywebsite.com/posts/edit/id 和形式的行动应该posts/edit/id

自动生成,但问题是,在某些情况下,我打开HTML代码我发现表单的动作只有posts/edit而没有id这会导致更新失败...

我花了很多时间来弄清楚什么情况使这种错误动作:

  • 即时动态生成的字段(使用JavaScript & AJAX)根据这篇文章的类别..
  • 当其中一个动态生成的字段的值无效时,生成的操作变为posts/edit !!

我真的需要帮助,因为我不知道为什么会发生这种情况!
我不想浪费更多时间挖进cakephp的核心...
因此,如果有cakephp专家对此有一个想法,请帮助我!

谢谢你提前!

回答

0

使用URL参数,它可以让你明确地定义的URL形式:

echo $form->create('Post', array('url' => $html->url(array('action'=>'edit', $id)))); 
+0

现在我已经这样做了......但我想明白发生了什么! – 2011-04-12 04:03:42

+0

查看[FormHelper](http://api.cakephp.org/view_source/form-helper/#line-245)的源代码,然后;)您可以看到它首先检查URL参数。或者,它将使用action参数或default来使用与表单相同的操作。当它使用动作参数时,不能向它传递额外的值(比如一个id),就像使用$ html-> url()一样。 – Tyler 2011-04-12 17:03:45

0

这听起来像$id可能是没有得到设置,因为它应该沿着它是否被获得通过。您需要确保它已设置为编辑有问题的记录。确保你的javascript包含隐藏字段,其中包含记录的id

通常做过这样的,与表单助手:echo $this->Form->input('id');

而且,如果其中一个字段是无效的,形式不应实际正确提交,如果您使用的是蛋糕的验证,所以这是被期望。

相关问题