我有一个分隔文件位于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