Справка по проверке кода - PullRequest
0 голосов
/ 25 мая 2010

Я пишу систему, в которой пользователи могут создавать / запускать запросы по запросу на основе значений 4 выпадающих списков. Списки генерируются динамически на основе ряда факторов, но в этот момент у меня возникают проблемы с проверкой входных данных с использованием встроенных в валидацию классов Codeigniter. Я думаю, что у меня что-то не в порядке, и я попытался посмотреть на сайт codeigniter , но я думаю, что запутался.

На мой взгляд (/dashboard/dashboard_index.php), у меня есть следующий блок кода:

<?=form_open('dashboard/dashboard_add');?>
        <select ... name='selMetric'>
        <select ... name='selPeriod'>
        <select ... name='selSpan'>
        <select ... name='selTactic'>
        <input type="submit" name="submit_new_query" value="Add New Graph" class="minbutton" ></input>
<?=form_close();?>

Тогда в моем контроллере у меня есть следующие 2 метода:

function index() {

        $this->load->helper(array('form', 'url'));
        $this->load->library('validation');

        //population of $data

        $this->load->tile('dashboard/dashboard_index', $data);

    }

function dashboard_add()
    {
        $rules['selMetric'] = "callback_sel_check";
        $rules['selPeriod'] = "callback_sel_check";
        $rules['selSpan'] = "callback_sel_check";
        $rules['selTactic'] = "callback_sel_check";
        $this->validation->set_rules($rules);

        $fields['selMetric'] = "Metric";
        $fields['selPeriod'] = "Time Period";
        $fields['selSpan'] = "Time Span";
        $fields['selTactic'] = "Tactic";
        $this->validation->set_fields($fields);

        if ($this->validation->run() == false) {
            $this->index();
        } 
        else {
            //do stuff with validation information
        }
    }

Вот моя проблема. Я могу заставить вещи правильно проверять, но за количество ошибок, которые я имею, я получаю

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

как сообщение об ошибке для всего. Я думаю, что моя проблема в том, что у меня неправильное расположение $ rules и $ fields, но я пробовал несколько перестановок, и я просто продолжаю понимать это неправильно. Я надеялся, что смогу получить какой-нибудь совет о правильном месте для размещения вещей.

1 Ответ

4 голосов
/ 25 мая 2010

Вы устанавливаете сообщения об ошибках в функциях обратного вызова проверки с помощью клавиши сообщения, которая соответствует имени вашей функции (sel_check в примере ниже)? То есть, если ваша функция обратного вызова называется sel_check, то $this->validation->set_message также должна ссылаться на sel_check. Ваши функции обратного вызова должны выглядеть примерно так (простите за немного псевдокод. Я не знаю, что на самом деле делают ваши функции проверки):

function sel_check($var) {
    if ($var == 'something') {
        $this->validation->set_message('sel_check', 'The %s field can not be the word "something"');
        return FALSE;
    } else {
        return TRUE;
    }
}

Из документации:

Сообщение об ошибке было установлено с помощью функции $this->validation->set_message. Просто помните, что ключ сообщения (первый параметр) должен соответствовать имени вашей функции.

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

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