Створення форми
===============

Написання форми не повинно викликати ніяких труднощів. Ми починаємо із тега `form`, атрибут 
`action` якого повинен містити URL дії `login`, розглянутої раніше. Потім додаємо мітки і поля 
вводу для атрибутів, оголошених в класі `LoginForm`. На завершення ми вставляємо кнопку відправки даних форми. 
Все це без проблем пишеться на чистому HTML коді.

Для спрощення процесу створення форми Yii надає декілька класів помічників (helper). 
Наприклад, для створення текстового поля, можна викликати метод [CHtml::textField()], для випадаючого списку —
[CHtml::dropDownList()].

> Info|Інформація: Безумовно, може виникнути справедливе питання, а в чому перевага використання помічника, якщо обсяг використовуваного коду приблизно той же, що й у випадку з чистим HTML кодом?
Відповідь проста: використання помічника дає великі можливості. Наприклад, код, наведений нижче, створює текстове поле, яке відправляє дані форми на сервер, коли користувач змінює її значення.
> ~~~
> [php]
> CHtml::textField($name,$value,array('submit'=>''));
> ~~~
> Зауважте, що все реалізовано без жодного рядка JavaScript.

Нижче ми створюємо представлення - форму авторизації - за допомогою класу [CHtml]. Тут змінна `$model` — екземпляр класу `LoginForm`:

~~~
[php]
<div class="form">
<?php echo CHtml::beginForm(); ?>

<?php echo CHtml::errorSummary($model); ?>

<div class="row">
<?php echo CHtml::activeLabel($model,'username'); ?>
<?php echo CHtml::activeTextField($model,'username'); ?>
</div>

<div class="row">
<?php echo CHtml::activeLabel($model,'password'); ?>
<?php echo CHtml::activePasswordField($model,'password'); ?>
</div>

<div class="row rememberMe">
<?php echo CHtml::activeCheckBox($model,'rememberMe'); ?>
<?php echo CHtml::activeLabel($model,'rememberMe'); ?>
</div>

<div class="row submit">
<?php echo CHtml::submitButton('Войти'); ?>
</div>

<?php echo CHtml::endForm(); ?>
</div><!-- form -->
~~~

Форма, яку ми створили вище, володіє значно більшою динамічністю. Приміром, [CHtml::activeLabel()] створює мітку, відповідну атрибуту моделі, а якщо при введенні даних була допущена помилка, то CSS клас мітки зміниться на `error`, змінивши зовнішній вигляд мітки на
відповідний CSS стиль. Подібним чином метод [CHtml::activeTextField()] 
створює текстове поле для відповідного атрибута моделі і графічно виділяє помилки вводу. 

Якщо використовувати CSS стиль `form.css`, який створюється скриптом `yiic`, створена форма буде виглядати так:

![Сторінка авторизації](login1.png)

![Сторінка авторизації з повідомленням про помилку](login2.png)

Починаючи з версії 1.1.1, для створення форм можна скористатися новим
віджетом [CActiveForm], який дозволяє реалізувати валідацію як на клієнті, так і на сервері. При використанні [CActiveForm] код представлення буде виглядати наступним чином:

~~~
[php]
<div class="form">
<?php $form=$this->beginWidget('CActiveForm'); ?>

	<?php echo $form->errorSummary($model); ?>

	<div class="row">
		<?php echo $form->label($model,'username'); ?>
		<?php echo $form->textField($model,'username') ?>
	</div>

	<div class="row">
		<?php echo $form->label($model,'password'); ?>
		<?php echo $form->passwordField($model,'password') ?>
	</div>

	<div class="row rememberMe">
		<?php echo $form->checkBox($model,'rememberMe'); ?>
		<?php echo $form->label($model,'rememberMe'); ?>
	</div>

	<div class="row submit">
		<?php echo CHtml::submitButton('Увійти'); ?>
	</div>

<?php $this->endWidget(); ?>
</div><!-- form -->
~~~