2011-11-15 45 views
1
$crud->set_rules('user_password', 'Password', 'trim|required|matches[konfirmpass]'); 
$crud->set_rules('konfirmpass', 'Konfirmasi Password', 'trim|required'); 

$crud->callback_edit_field('user_password',array($this,'_user_edit')); 
$crud->callback_add_field('user_password',array($this,'_user_edit')); 

回調函數:Codeigniter Grocery Crud更新字段?

function _user_edit(){ 
    return '<input type="password" name="user_password"/> Confirmation password* : <input type="password" name="konfirmpass"/>'; 
} 

我的問題是,如果只是 「密碼」 不空白如何更新?

+1

請告訴我們*您正在使用哪個* CRUD庫。 –

+0

另外,這是什麼CI版本? –

+0

以前感謝,我使用Grocerycrud,http://www.grocerycrud.com/ 和CodeIgniter 2.0版。3 –

回答

4

我已經安裝了CI 2.0.3和GC 1.1.4來測試,因爲一眼看上去你的代碼看起來很好。事實證明,這是和你的代碼工作。我修改了帶有GC的examples控制器中的方框employees_management方法。在數據庫中添加一個user_password列,並將您的代碼添加到控制器。

該代碼既確保密碼字段匹配,並提交時它們不是空的。在"The Password field is required"

  • 不匹配的結果

    • 空導致"The Password field does not match the konfirmpass field."

    或許,如果這不是爲你工作,你應該張貼您的整個方法,而不僅僅是規則和回調,所以我們可以看到如果還有其他問題。

    Working

    編輯

    編輯的字段,只有在密碼已被編輯您需要添加

    $crud->callback_before_update(array($this,'update_password')); 
    
    function update_password($post) { 
    if(empty($post['user_password'])) { 
        unset($post['user_password'], $post['konfirmpass']); 
    } 
    
    return $post; 
    } 
    

    然而,這可能意味着你需要刪除驗證對於空密碼取決於回調運行的順序(如果它們在表單驗證運行之前或之後)。如果他們在表單驗證之前運行,則還需要運行callback_before_insert()的調用並在兩個回調中添加驗證規則。插入顯然需要required規則,更新不會。

    編輯2,編輯1

    的澄清已經觀察到它,驗證回調之前運行,所以你不能在回調函數設置驗證規則。爲了達到這個目的,你需要使用一個名爲getState()的函數,它允許你根據CRUD執行的動作添加邏輯。

    在這種情況下,我們只希望讓密碼字段required當我們加入一排,當更新不是必需的。

    因此,除了上述回調update_password()之外,您還需要將表單驗證規則包裝在狀態檢查中。

    if($crud->getState() == 'insert_validation') { 
        $crud->set_rules('user_password', 'Password', 'trim|required|matches[konfirmpass]'); 
        $crud->set_rules('konfirmpass', 'Konfirmasi Password', 'trim|required'); 
    } 
    

    如果CRUD插入,這將添加驗證選項。

  • +0

    謝謝'本Swinburne',是的,我的意思是。如果用戶添加新記錄,則驗證規則必須工作。我的意思就是如果用戶'編輯記錄'並留下空的字段密碼,所以密碼不需要更新和驗證規則不需要在這裏,但如果用戶編輯記錄和字段密碼不是空的我希望驗證規則工作正常。再次感謝您的幫助。 –

    +0

    我誤解了你的問題。我已經更新了我的答案。 –

    +0

    謝謝,我會先嚐試。 –