Файл конфигурации проверки формы Codeigniter не работает - PullRequest
0 голосов
/ 16 июня 2010

Я использую технику сохранения правил проверки формы codeigniter в конфигурационный файл, как указано здесь , но не могу заставить его работать.

Я также пытаюсьвызовите функции обратного вызова проверки из библиотеки Validation_Callbacks.php, которую я загружаю через механизм autoload.php.

Ниже приведен фрагмент из моего файла конфигурации правил проверки формы form_validation.php:

<?php
/* This config file contains the form validation sets used by the application */

$config = array(
    'register_user' => array(
            array(
                    'field' => 'dob',
                    'label' => 'lang:register_dob',
                    'rules' => 'trim|required|date_check|age_check|xss_clean'
                ), ...
            )
          )

А вот файл Validation_Callbacks.php, который находится в приложении / библиотеках:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
/**
* Custom validator library containing app-specific validation functions
*/
class Validation_Callbacks {
/* Checks that the given date string is formatted as expected */
function date_check($date) {
    $ddmmyyyy='(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](19|20)[0-9]{2}';
    if(preg_match("/$ddmmyyyy$/", $date)) {
        return TRUE;
    } else {
        $this->form_validation->set_message('date_check', $this->lang->line('error_register_dob_format'));
        return FALSE;
    }
}

/* Checks that the given birthday belongs to someone older than 18 years old. We assume
* that the date_check method has already been run, and that the given date is in the
* expected format of dd/mm/yyyy */
function age_check($date) {
    $piecesDate = explode('/', $date);
    $piecesNow = array(date("d"), date("m"), date("Y"));
    $jdDate = gregoriantojd($piecesDate[1], $piecesDate[0], $piecesDate[2]);
    $jdNow = gregoriantojd($piecesNow[1], $piecesNow[0], $piecesNow[2]);

    $dayDiff = $jdNow - $jdDate;

    if ($dayDiff >= 6570) {
        return TRUE;
    } else {
        $this->form_validation->set_message('age_check', $this->lang->line('error_register_age_check'));
        return FALSE;
    }
}

}

Я вызываю это, используя стандарт:

if ($this->form_validation->run('register_user') == FALSE) {

Мои функции обратного вызова небудучи призваннымЕсть что-то, чего я здесь не хватает?Заранее благодарим за любую помощь, которую вы можете оказать!

1 Ответ

1 голос
/ 16 июня 2010

Убедитесь, что:

Когда группа правил названа одинаково к классу / функции контроллера это будет будет использоваться автоматически при запуске () функция вызывается из этого класс / функция.

Для тестирования вы можете попробовать:

$this->load->config('configname');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...