2011-04-11 43 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');

而且,如果其中一個字段是無效的,形式不應實際正確提交,如果您使用的是蛋糕的驗證,所以這是被期望。

相關問題