Проблема с сохранением правил проверки в файл конфигурации - PullRequest
2 голосов
/ 18 февраля 2012

Я пытаюсь переместить правила проверки из контроллера в файл конфигурации.Я следую указаниям, которые задокументированы здесь , но я не могу заставить его работать.Когда форма отправлена, проверка не выполняется.Повтор validation_errors() ничего не печатает.

После небольшого копания метод run() в библиотеке проверки формы возвращает false , поскольку не заданы правила конфигурации.Вот отрывок:

system / library / Form_validation.php:

// No validation rules?  We're done...
if (count($this->_config_rules) == 0)
{
    return FALSE;
}

Любая помощь будет принята с благодарностью.Вот мой код:

application / controllers / signup.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Signup extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        if ($this->form_validation->run()) {
            $this->user_model->insert(array(
                'email_address' => $this->input->post('email_address'),
                'password' => $this->input->post('password'),
            ));

            redirect('/log-in');
        }

        $this->load->view('header');
        $this->load->view('signup/index');
        $this->load->view('footer');
    }

}

/* End of file signup.php */
/* Location: ./application/controllers/signup.php */

application / config / form_validation.php:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config = array(
    'signup/index' => array(
        array(
            'field' => 'email_address',
            'label' => 'Email Address',
            'rules' => 'trim|required|max_length[255]|valid_email|email_in_use'
        ),
        array(
            'field' => 'password',
            'label' => 'Password',
            'rules' => 'required|min_length[6]'
        ),
        array(
            'field' => 'confirm_password',
            'label' => 'Confirm Password',
            'rules' => 'required|matches[password]'
        ),
    ),
);

/* End of file form_validation.php */
/* Location: ./application/config/form_validation.php */

Я использую CI 2.1.0.

Ответы [ 3 ]

0 голосов
/ 18 февраля 2012

Возможно, это опечатка на вашей стороне, но конфигурацию следует хранить внутри application/config/form_validation.php (а не "application / controllers / signup.php", как вы написали в посте). Таким образом, он должен быть вызван автоматически.

Расширяя сказанное @Catfish, вы можете:

  1. Не создавайте другой набор правил (если вам нужно только одно), и ваш массив будет выглядеть так:

    $config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Username',
                     'rules'   => 'required'
                  ),
               array(
    
  2. Создайте различные наборы правил, которые следуют структуре, которую вы использовали; но в этом случае вам нужно перейти к методу run() , который правило вы хотите использовать. Итак, в вашем случае это должно быть

      if($this->form->validation->run('signup/index'))
    
0 голосов
/ 18 февраля 2012

Несколько вещей ...

Вы загрузили библиотеку form_validation в config/autoload.php? Потому что я не вижу его загруженным в ваш контроллер. Если вы хотите загрузить его в свой контроллер, используйте $this->load->library('form_validation').

Я вижу правило для поля электронной почты с именем email_in_use, где хранится это правило? Если вы собираетесь создавать собственные правила, убедитесь, что они в libraries/MY_Form_validation.php.

Я никогда не использовал метод контроллера / функции, и он всегда работал для меня. Я бы использовал что-то вроде $this->form_validation->run('login'); для чего-то подобного.

Можете ли вы подтвердить, оценивает ли проверочный вызов run() значение true или false? Ваша страница перенаправляется на вход в систему ? (Кстати: я не думаю, что вам нужно / в вызове перенаправления.

Наконец, у вас включены ошибки PHP в E_ALL? Чек php.ini.

0 голосов
/ 18 февраля 2012

Вам нужно передать ваш config var в методе run.Прочитайте раздел в вашей опубликованной ссылке под названием «Вызов определенной группы правил».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...