Вот ситуация: у меня есть веб-сайт со сложной формой адреса с несколькими входами для номера дома, улицы, телефона и т. Д. Эта форма используется во многих местах по всему сайту.
Существует несколькоразличные сценарии, которые будут влиять на эту форму:
- Иногда форма должна отображаться «свежей», при этом все входные данные остаются пустыми в ожидании добавления нового адреса
- В других случаях,форма должна будет pre заполнить себя адресом, извлеченным из базы данных, для редактирования
- Наконец, форма может потребовать re - заполнить себя, еслипользователь ввел адрес, отправил форму, но забыл добавить номер своего дома - в этом случае ему нужно вернуть только что введенное, но отобразить предупреждение о проверке формы.
Однако ...
- Я хочу иметь только одну HTML-форму для адресов, используемых по всему сайту - для сохранения повторяющегося кода
- Я хочу этоодна форма для обработки каждого другого сценария, показанного выше - для сохранения повторяющегося кода
Вот как выглядит пример ввода для формы:
<div class="input">
<input id="house_number" name="house_number" value="<?php echo set_value('house_number', $details->row('house_number'));?>"/>
<label for="house_number">House Number</label>
</div>
Как видите, это решает сценарий 2 и сценарий 3 - код echo set_value($house_number, $details->row('house_number'));?>
по умолчанию предварительно заполнит себя данными, взятыми из MySQL Resultset (1), или - если обнаружит, что что-то уже былопредставил - заново заполните себя предыдущими данными, хранящимися в house_number
.
Мой вопрос: Как я могу встроить в это сценарий 1, в идеале, без повторения какого-либо кода, добавив nested-ifs и т. д.?Всякий раз, когда вы загружаете форму «с нуля», PHP по понятным причинам выводит ошибки о том, что $details
не задано - потому что нечего тянуть из базы данных или моей модели.
Моя модель возвращает MySQL Resultset, ноЯ думал, вы могли бы инициализировать этот набор результатов с пустой строкой?Но я не был уверен, что это правильный путь.
Спасибо!
Джек