Оглавление

Генерация формы для создания и редактирования событий

Чтобы редактировать существующие события или добавлять новые, требуется форма. Для генерации такой формы добавим в класс Calendar метод  displayForm(). Этот простой метод решает следующие задачи:
■   проверяет, передан ли ему целочисленный параметр, представляющий уникальный идентификатор события;
■   создает пустые переменные для различных полей, описывающих событие;
■   загружает информацию о событии, если был передан соответствующий идентификатор;
■   сохраняет в ранее созданных переменных информацию о событии, если оно существует;
■   отображает форму.

Примечание. Явная проверка и, при необходимости, коррекция идентификатора события, передаваемого в суперглобальной переменной $_post, обеспечивают безопасность его использования, поскольку любое нецелочисленное значение будет преобразовано в 0.


Создайте метод displayForm(), добавив в класс Calendar следующий код, выделенный желтым фоном.

 


 <?php 
 

class Calendar extends DB_Connect 
{ 
private $_useDate; private $_m; private $_y; private $_daysInMonth; private $_startDay; public function __construct($dbo=NULL, $useDate=NULL) {...} public function buildCalendar() {...} public function displayEvent($id) {...}
/** * Генерирует форму, позволяющую редактировать или создавать события * * @return string: HTML-раэметка формы для редактирования событий */ public function displayForm() { /* * Проверить, был ли передан идентификатор (ID) */ if ( isset($_POST['event_id']) ) { $id = (int) $_POST['event_id']; // Принудительно задать целочисленный тип // для обеспечения безопасности данных } else { $id = NULL; } /* * Инициализировать переменную, хранящую текст заголовка * и надписи на кнопке отправки формы */ $submit = "Создать событие"; /* * Если передан ID, загрузить соотватстаующаа событие */ if ( !empty($id) ) { $event = $this->_loadEventById($id); /* * Если не возвращен объект, возвратить NULL */ if ( !is_object($event) ) { return NULL; } $submit = "Изменить событие"; } /* * Создать разметку */ return <<<FORM_MARKUP <form action="assets/inc/process.inc.php" method="post"> <fieldset> <legend>$submit</legend> <label for="event_title">Название события</label> <input type="text" name="event_title" id="event_title" value="$event->title" /> <label for="event_start">Время начала</label> <input type="text" name="event_start" id="event_start" value="$event->start" /> <label for="event_end">Время окончания</label> <input type="text" name="event_end" id="event_end" value="$event->end" /> <label for="event_description">Описание события-</label> <textarea name="event_description" id="event_description">$event->description</textarea> <input type="hidden" name="event_id" value="$event->id" /> <input type="hidden" name="token" value="$_SESSION[token]" /> <input type="hidden" name="action" value="event_edit" /> <input type="submit" name="event_submit" value="$submit" /> or <a href="./">cancel</a> </fieldset> </form> FORM_MARKUP; }
private function _loadEventData($id=NULL) {...} private function _createEventObj() {...} private function _loadEventById($id) {...} } ?>
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити