2016-09-19 3 views
0

Я использовал CodeIgniter 3.1.0 в своем текущем проекте. Для проверки формы все работает хорошо, но у меня есть проблема, когда я хочу использовать matches, как правило. Это мой HTML:Проверка идентификатора CodeIgniter всегда возвращает значение false на совпадение action

<input type="password" class="form-control" name="password" id="password"> 
<input type="password" class="form-control" name="confirm" id="confirm"> 

И это мой контроллер:

$this->form_validation->set_rules('password','Password','matches[confirm]'); 
if ($this->input->post('password') != '' && $this->form_validation->run() == FALSE) { 
    echo 'Error'; 
} 

И я всегда получаю ошибку, как результат, даже когда я поставил такое же значение в обоих полях. Какая у меня ошибка?

+0

Использование '$ this-> load-> библиотеки ('form_validation');' в конструкторе, если у вас есть не определен. – Virb

+0

Я не вижу '$ this-> form_validation-> set_rules ('confirm', 'Confirm', 'required');' – user4419336

+0

@Virb Я сделал это в своем коде. У меня есть несколько валидаций в этом файле, но у меня есть проблема только с тем, что описано выше. –

ответ

0

Это может быть полезно, если оно работает.

Если у вас есть проблемы с вашим matches. Сделайте одну вещь, создать функцию, как matches_pass и использовать, как показано ниже:

$this>form_validation>set_rules("input[password]","Password",'required|matches_pass[input---conf_password]'); 

и вашу функцию,

public function matches_pass($str, $field) 
{ 
    $field = explode('---',$field); 
    if (! isset($theField = $_POST [$field[0] ][ $field[1] ])) 
    { 
     return FALSE; 
    } 
    return ($str !== $theField) ? FALSE : TRUE; 
} 

И положить его в библиотеке.

+0

Зачем мне нужен такой код, когда инфраструктура сама построила? –

+0

Каким-то образом, в какой-то момент нет возможности использовать основной вход CI. Но я проверяю, почему это происходит. – Virb

1

При условии if это упоминание ($ this-> input-> post ('password')! = ''). Таким образом, любое значение, которое вы вставляете, будет выполняться true.

if ($this->input->post('password') != '' && $this->form_validation->run() == FALSE) { 
     echo 'Error'; 
    } 

Я хотел бы предложить вам, как это

public function index() 
{ 
$this->load->helper(array('form', 'url')); 

$this->load->library('form_validation'); 

$this->form_validation->set_rules('username', 'Username', 'callback_username_check'); 

$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]'); 
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); 

if ($this->form_validation->run() == FALSE) 
{ 
$this->load->view('myform'); 
} 
else 
{ 
$this->load->view('formsuccess'); 
} 
} 

как упоминание в http://www.codeigniter.com/userguide2/libraries/form_validation.html

Смежные вопросы