codeigniter — Создайте пользовательский обратный вызов проверки в form_validation.php, используя codeingiter

Здравствуйте, я пытаюсь создать обратный вызов проверки для моей формы для проверки поля, только если оно не пустое. Я создал свои правила проверки в файл конфигурации с именем form_validation.php.
Вот часть его содержания:

$config=array(
'Users_Controller/add'=>array(
array(
'field'=>'email',
'label'=>'email',
'rules'=>'callback_email'
),
)
);

public function email($value){
if( trim( strlen($value) )!==0 ){
$this->form_validation->set_rules(
'email',
'email',
'valid_email|is_unique[users.email]',
array(
'valid_email'=>'invalid email',
'is_unique' => 'email already registered'
)
)
}
}

В моем контроллере, в users_controller.php вот как я справляюсь с отправкой формы:

class Users_Controller  extends CI_Controller{
public function add(){
if($this->form_validation->run()){
$this->User_model->save();
$this-session->set_flashdata('success','okay');
redirect('users/list');
}
else {
$this->load->view('add')
}
}
}

К сожалению, проверка не учитывает метод проверки обратного вызова, который я добавил в файл конфигурации. form_validation.php но если я помещу этот обратный вызов в контроллер, процесс проверки игнорирует все остальные правила, введенные в form_validation.php

Любая помощь ? Заранее спасибо.

0

Решение

Надеюсь, это поможет вам

form_validation.php

/*put callback rule in form_validation.php*/

$config=array(
'Users_Controller/add'=>array(
array(
'field'=>'email',
'label'=>'email',
'rules'=>'callback_check_email'
),
)
);

положить метод обратного вызова в Users_controller.php

В Users_controller.php

function check_email($value)
{
/*check your email rule here as u want */
/* this is just example*/

$email= $this->YourModel->getemailofUser();
if ($value == $email) {
return TRUE;
}
else
{
$this->form_validation->set_message('check_email', 'Your email is not a valid registered email!');
return FALSE;
}

}

Для большего : https://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-your-own-validation-methods

1

Другие решения

Чтобы вызвать определенную группу правил проверки, такую ​​как Users_Controller/addнеобходимо передать имя группы run() метод.
users_controller.php

    ...
public function add(){
if($this->form_validation->run('Users_Controller/add')){
...
}
...

И для правильной работы обратного вызова проверки необходимо разместить метод обратного вызова в том же контроллере метода, который вызывает обратный вызов.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector