我有一個分隔文件位於applications/config/form_validation.php
用於驗證。創建新用戶的兩個字段必須是唯一的,他們的身份證和電子郵件。Codeigniter驗證編輯表單時唯一字段的問題
'user' => array(
array(
'field' => 'email',
'label' => 'E-MAIL',
'rules' => 'required|valid_email|is_unique[usuario.email]'
),
array(
'field' => 'cpf_cnpj',
'label' => 'CPF',
'rules' => 'required|_validate_cpf|is_unique[usuario.cpf_cnpj]'
),
...
)
在開始的時候,我曾使用同一組驗證的編輯形式,但是我已經和這兩個領域的問題,他們總是被指責不是唯一的。
因此,我在表單中添加了一個hidden
字段,用於存儲這些字段的當前值並添加另一個值,也存儲該值,但在視圖中顯示的值將是唯一要編輯的值,並且然後,在edit
方法,條件會繼續檢查,如果hidden
場是到正規的不同領域發生之前:
// HTML
<input type="email" name="novoemail" class="email <?php echo form_error('novoemail') ? 'campo_aviso' : ''; ?>" value="<?php echo $u['email']; ?>"/>
<input type="hidden" name="email" value="<?php echo $u['email']; ?>"/>
// In `edit`
if ($this->input->post('email') !== $this->input->post('novoemail')) {
$this->form_validation->set_rules('email', 'E-MAIL', 'is_unique[usuario.email]');
}
if ($this->form_validation->run('edit_user')) { ... }
如果發現差異,添加規則以使其唯一。現在的問題是,即使輸入的電子郵件不存在,它的任何區別都會失敗,並且指責它們不是唯一的。
我需要找到一種方法來編輯唯一的字段,並仍然保證唯一性。
它失敗了,因爲在'form_validations.php'中,該版本還檢查它是否是唯一的。這是CI問題。無論如何,你的解決方案幫助了我。我編輯了一下,重用了我製作和使用的方法。非常感激。 – mfgabriel92
這很棒,我很高興你能夠做出一些有用的東西。 – Joe