Формы
Формы в CakePHP создаются через PHP-код.
echo $this->Form->create('Post'); /* поля формы */ echo $this->Form->end('Редактировать');
В результате сгенерируется следующий HTML-код:
<form action="/posts/" id="PostIndexForm" method="post" accept-charset="utf-8"> <div style="display:none;"><input type="hidden" name="_method" value="POST"></div> <div class="submit"> <input type="submit" value="Редактировать"> </div> </form>
Создание формы через PHP-код нужно для формирования элементов форм на основе полей из базы данных, и поведение этих полей на основе настроек в модели (минимальное количество символов, обязательное поле и др).
Например, если нужно будет реализовать, чтобы поле не было пустым при отправке запроса, то достаточно будет добавить пункт в файле модели, и CakePHP будет возвращать ошибку, если в указанном поле не задано значение.
Выводится элемент формы через form->input()
:
echo $this->Form->input('name');
В результате сгенерируется следующее поле:
<div class="input text"> <label for="PostName">Name</label> <input name="data[Post][name]" type="text" id="PostName"> </div>
Значение «name» — это имя поля из базы данных.
Тип элемента формы будет зависеть от типа поля в базе данных. Т.е., если поле «name» в базе данных имеет тип «TEXT», то сгенерируется элемент <textarea>
.
Получить значение элемента формы в контроллере можно через свойство $this->request->data
, где содержатся все POST-запросы.
if ($this->request->is('post')) { $name = $this->request->data['Post']['name']; }