2011-03-14 114 views
1

我在我的index.ctp以下代碼視圖創建表格:CakePHP的形式選擇作爲參數

<?php 
    echo $this->Form->create(false,array('url' => array('controller' => 'admins', 'action' => 'edit_gallery'))); 

    echo $this->Form->input('name', array('options' => $array,'empty' => 'Select a gallery')); 

    echo $this->Form->end(__('Submit', true)); 
?> 

氏碼創建的項目的下拉式列表,每一個具有相關聯的號碼作爲值。 在我admins_controller我已經實現了edit_gallery行動,正是因爲它,當你烤一個項目來了,只是我改變了典型編輯edit_gallery

我想是這樣的:用戶從列表中選擇一個項目,然後點擊「提交」,而且他帶到edit_gallery.ctp視圖,表單編輯該項目的信息數據庫並更新它。我的問題是,而不是這樣做,會發生什麼是,當用戶點擊提交,一個新的項目被創建在數據庫中,它甚至不顯示ctp視圖。

一般來說,我的問題是:如何在用戶點擊「提交」後在登錄頁面中獲取表單的選定選項?

編輯 理想情況下,我想的是,當用戶點擊「提交」,它會發送一個請求像管理員/ edit_gallery/X其中X將值關聯的選擇由用戶製作,而不需要發送任何其他數據。我不知道這是否可能。

謝謝!

回答

0

是CakePHP的默認烘烤檢查,如果數據不爲空,換言之,如果一個表已提交,然後更新該記錄的編輯方法。

所以,當你重定向到* edit_gallery *從表單中,數據屬性不爲null,因此新項目創建數據庫的原因。

有很多方法可以解決這個問題。其中之一是從* edit_gallery *方法中刪除該檢查,創建另一個方法(如* save_gallery *),並從* edit_gallery.ctp *中調用該方法。

所以* edit_gallery.ctp *形式將類似於:

<?php 
    echo $this->Form->create(false,array('url' => array('controller' => 'admins', 'action' => 'save_gallery'))); 

    (your form info) 

    echo $this->Form->end(__('Submit', true)); 
?> 
+0

感謝您的答覆!我會檢查一下。但是,只是爲了好奇,你知道我的**編輯**部分是否可以解釋我的帖子? – 2011-03-14 16:47:26