Более простой способ заполнить данные формы и данные проверки в Code Igniter? - PullRequest
5 голосов
/ 31 января 2010

Я новичок в коде воспламенителя. Я следую инструкции по проверке формы, найденной по адресу: http://www.codeignitor.com/user_guide/libraries/validation.html

Я обнаружил, что слишком много набираю в представлении, чтобы заполнить форму заново. Например, вот как выглядит одно из моих полей INPUT:

<input type="text" name="email" value="<?=$this->validation->email ? $this->validation->email : $array_db_values['email'] ?>" />

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

Есть ли в коде воспламенителя "более чистый" способ визуализации такого рода выходных данных? В противном случае я собираюсь сделать что-то подобное в моем контроллере:

$array_db_values = getdbresults();
if($_POST['submit'])
foreach($_POST as $key=>$val)
$array_db_values[$key] = $val;

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

Тогда поля ввода на мой взгляд могут быть просто:

<input type="text" name="email" value="<?=$array_db_values['email'] ?>" />

Есть ли лучший / собственный способ CI для обработки этого сценария?

Ответы [ 4 ]

4 голосов
/ 31 января 2010

Я не думаю, что существует более простой способ, лучший способ IMO сделать что-то подобное в вашем контроллере:

if (isset($_POST['submit']))
{
    $values = $_POST;
}

else
{
    $values = getdbresults();
}

Нет необходимости перебирать массив $ _POST, для краткости:

$values = (isset($_POST['submit'])) ? $_POST : getdbresults();

По вашему мнению, вы делаете то же самое:

<input type="text" name="email" value="<?=$values['email'] ?>" />

Или используйте помощник по формам :

echo form_input('email', $values['email']);
1 голос
/ 01 февраля 2010

Вы, ребята, заглядывали в проект Datamapper Overzealous?

http://www.overzealous.com/dmz/

Он обрабатывает проверку на уровне модели. В полях формы вы можете установить значение, полученное из модели (из базы данных или из вашего предыдущего сообщения).

<input type='text' name='email' value='<?=$object->data_item ?>' />

Я также довольно новичок в CodeIgniter, но добавление этой библиотеки сделало вещи намного проще. Этот проект также поставляется с расширением формы, которое действительно могло бы упростить ситуацию, но я пока не очень много играл с ним.

0 голосов
/ 01 февраля 2010

Я чувствовал то же самое в отношении работы с формами, ознакомьтесь с Form Lib от macigniter на форумах Ignited Code. Это экономит массу времени и действительно хорошо написано.

0 голосов
/ 31 января 2010

Я делаю то же самое, что и вы. Это немного громоздко, но не так уж плохо imho.

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