Подтверждение формы кодового указателя для логики модели - PullRequest
1 голос
/ 23 июня 2011

Я работаю над своим первым приложением CodeIgniter и столкнулся с некоторой путаницей при обработке почтовых данных.

Более конкретно, я понимаю роль $this->form_validation->set_rules() и то, как set_value() работает для повторного заполнения входных значений, когда проверка не удалась, но я не могу понять, если $this->input->post совпадает со значением set_value эквивалент.

Я понимаю, что большинство правил валидации будет иметь логический результат, однако как и те, что trim|htmlspecialchars - они также имеют преимущество при подготовке данных для запросов к базе данных.

Итак, могу ли я в моей модели получить доступ к входам после обработки библиотекой проверки формы, или я должен выполнить дополнительную подготовку внутри модели непосредственно на $this->input->post('variable')?

Моя интуиция говорит мне, что я должен добавить окончательную обработку, например htmlspecialchars, прямо перед SQL в модели, так как это действительно операция, специфичная для БД (я бы не хотел & вместо & в моих входах формы , но я бы хотел & в базе данных).

Между прочим, в моем чтении я встретил $this->validation->variable, который, по-видимому, был ответом на мой вопрос в предыдущих версиях CI.

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Как уже упоминалось, set_value() предназначено исключительно для повторного заполнения входных данных формы - больше ничего. Например, set_checkbox() собирается вернуть что-то вроде checked="checked", что явно не то, что вы хотите отправить в вашу модель.

Есть место для спора о том, где должна обрабатываться проверка ввода и подготовка, но большинство согласится, что это должно быть сделано в контроллере.

Вы можете выполнить дополнительную обработку в модели, если хотите, но обычно вы не хотите получать доступ к $_POST из модели - это делает модель менее полезной. Не все данные будут поступать напрямую от пользователя, поэтому лучше заранее подготовить данные и отправить их в виде нового массива / объекта в модель. Модель не должна заботиться о том, откуда поступают данные.

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

1 голос
/ 23 июня 2011

Они похожи, но не совсем одинаковы.

Вы бы использовали $this->input->post('variable'); только внутри контроллера. Эта переменная будет проверена и очищена (если вы решите очистить ее с помощью xss_clean или примените любые другие функции препарирования).

set_value() следует использовать только в представлениях. Хотя это не является существенным, реальная ценность выполнения этого в отличие от использования $this->input->post заключается в том, что вы можете установить значение «по умолчанию» в качестве 2-го параметра, который автоматически используется, если значение сообщения пусто.

0 голосов
/ 13 апреля 2012

Разработчик

Я работаю как с фреймворком CakePHP, так и с Codeignator. Я чувствую себя лучше, проверка данных CakePHP Если у вас есть 8 полей, вы создаете проверку в контроллере с указателем. После проверки все поля остаются пустыми, если вы заполнили 8 полей и по ошибке пропустили 1 поле, а затем после проверки обновили страницу проверки данных кодового указателя и очистили все поля.

но в торте php прямо напротив проверки данных создайте в модели, вы создадите однократную проверку и используете несколько раз, когда вы вызываете модель, а затем вызываете проверку exp: add, edit.

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