Рассмотрим пример действия контроллера, который мы взяли из CRUD примера:
<?php class NewsController extends lmbController { [...] function doEdit() { $news = new News((int)$this->request->get('id')); $this->useForm('news_form'); $this->setFormDatasource($news); if(!$this->request->hasPost()) return; $news->import($this->request); if($news->trySave($this->error_list)) $this->redirect(); } ?>
Разберем наиболее важные моменты:
WACT-шаблона «news_form».
При использовании WACT-шаблонизатора формы описываются при помощи обычных тегов <form> с указанием атрибута runat='server', например:
<form id='news_form' name='news_form' method='post' runat='server'> <core:INCLUDE file='form_errors.html'/> <label for="title">Заголовок</label> <input type="text" name="title" size="40" title='Заголовок'> <br/> <input id='cancel' type='button' value="Отменить" onclick='window.close();return false;'> <input id='save' type='button' value="Создать/Изменить"> /form>
Обратите внимание на атрибут title <input> тега. Значение этого атрибута используется при отображении ошибок валидации. Например, вместо «title обязателty к заполнению», выведентся «Заголовок обязателен к заполнению».
Для вывода ошибок использутеся тег <form:errors> (в некоторых случаях <form:field_errors>), который передает список ошибок валидации из формы, внутри которой находится этот тег, в компонент, указанный атрибутом target, например:
<form id='news_form' name='news_form' method='post' runat='server'> [...] <form:errors target='errors'/> <list:list id='errors'> Ошибки валидации: <ul> <list:ITEM> <li>{$message}</li> </list:ITEM> </ul> </list:list> [...] </form>
Подробнее про валидацию данных, пришедних с формы, лучше почитать на странице "Валидация данных".
Обсуждение