Codeigniter простой проверки обратного вызова не работает - PullRequest
1 голос
/ 30 мая 2011

ОБНОВЛЕНО

Я создаю обратный вызов codeigniter для проверки ввода, когда пользователи вводят программные теги, например php, js, jquery.Значения разделяются запятыми.

Я хочу показать сообщение, если вы введете дубликаты тегов, например php, jquery, php, js, где php будет дубликатом.

Сначала в своем контроллере я установил правила проверки для 'user_tags`input

$this->form_validation->set_rules('user_tags', 'User Tags', 'callback_user_tags_dublicates', 'trim|xss_clean|max_length[100]|regex_match[/^[a-z,0-9+# ]+$/i]');

Затем обратный вызов

<?php function user_tags_dublicates($str)
        {
            $val = $str; //the input value (all the CSV)
            $tags = str_getcsv($val); //creates an array of the CSV
            if(count($tags) != count(array_unique($tags))) //if array not equal to unique array it contains duplicates
            {
                $this->form_validation->set_message('user_tags', 'The %s field can not have duplicate tags.');
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        } ?>

и, наконец, в представлении я показываю свою ошибку.

<?php echo form_error('user_tags'); ?>

Когда я ввожу дубликаты тегов, я получаю

Unable to access an error message corresponding to your field name.

Я не уверен, что делаю неправильно.Я проверил функцию на статической странице без правил проверки, и она работает.

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

установите сообщение об ошибке для user_tags внутри вашей user_tags_dublicates() функции

   $this->form_validation->set_message('user_tags', 'The %s field can not have duplicate tags.');
1 голос
/ 30 мая 2011

Это может звучать глупо, но вы проверили:

$tags = str_getcsv($val); //creates an array of the CSV

на самом деле возвращает теги правильно?

...