2012-04-13 4 views
0

Скажем, у меня есть тег select в моей пользовательской форме редактирования. Он содержит список школ, которым может быть назначен пользователь.Codeigniter - проверка формы и выпуск раскрывающегося списка

<select 'school'> 
    <option value='1'>School 1</option> 
    <option value='2'>School 2</option> 
</school> 

создан с помощью: echo form_dropdown('school', $school_list)

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

Итак, я сделал это:

$school = $this->db->get_where('schools', $filters) # result object from database 
echo form_dropdown('school', $school_list, $school->id); 

Проблема, конечно, это выдает сообщение об ошибке, когда пользователь не назначен школу еще и $school->id пуст.

Так что мой вопрос; Каков наилучший способ решить такую ​​проблему в кодеигнитре?

Один из способов, я мог подумать, чтобы решить это, вернув NULL на $school->id. Таким образом,

empty($school->id) && ($school->id = NULL); 
echo form_dropdown('school', $school_list, $school->id); 

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

echo form_dropdown('school', $school_list, set_value('school', $school->id)); 

У кого-нибудь есть лучшее решение?

EDIT: Обратите внимание, что это не тот код, который я использую. Я просто набрал это прямо сейчас, поэтому, если есть синтаксические ошибки или что-то еще, мои извинения.

ответ

3

Просто используйте echo form_dropdown('school', $school_list, set_value('school', @$school->id));

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

Выполнение этого будет отправлено значение NULL на третий параметр, если у вас нет идентификатора, и он будет выбирать первый <option> по умолчанию.

+0

Я думал об этом, но что это делает с функцией 'set_value()', хотя? Разве это не испортило бы это? – rgin

+0

Не совсем. Если у вас значение '$ _POST ['school']', оно будет выбрано. Если нет, он будет выбирать идентификатор по умолчанию или _NULL_ (первый). –

+0

Дорогой Бог, я только что протестировал его. Почему я этого не делал, прежде чем тратить 10 минут на то, чтобы поставить этот вопрос, меня озадачивает. Просто идет, чтобы показать, независимо от того, как долго вы проводите что-то, вы все равно можете использовать какую-то внешнюю перспективу. Спасибо, @Robin. – rgin

Смежные вопросы