0 follower

Создание формы

Написание формы не должно вызвать никаких затруднений. Мы начинаем с тега form, атрибут action которого должен содержать URL действия login, рассмотренного ранее. Затем добавляем метки и поля ввода для атрибутов, объявленных в классе LoginForm. В завершении мы вставляем кнопку отправки данных формы. Все это без проблем пишется на чистом HTML коде.

Для упрощения процесса создания формы Yii предоставляет несколько классов помощников (helper). Например, для создания текстового поля, можно вызвать метод CHtml::textField(), для выпадающего списка - CHtml::dropDownList().

Информация: Безусловно, может возникнуть справедливый вопрос, а в чем преимущество использования помощника, если объем используемого кода сравним с чистым HTML кодом? Ответ прост: использование помощника дает большие возможности. Например, код, приведенный ниже, создает текстовое поле, отправляющее данные формы на сервер, когда пользователь меняет ее значение.

CHtml::textField($name,$value,array('submit'=>''));

Заметьте, что все реализовано без единой строчки JavaScript.

Ниже мы создаем представление - форму авторизации - с помощью класса CHtml. Переменная $user равняется значению переменной $form, передаваемой представлению login из контроллера, и должна быть экземпляром класса модели LoginForm:

<div class="yiiForm">
<?php echo CHtml::beginForm(); ?>
 
<?php echo CHtml::errorSummary($user); ?>
 
<div class="simple">
<?php echo CHtml::activeLabel($user,'username'); ?>
<?php echo CHtml::activeTextField($user,'username'); ?>
</div>
 
<div class="simple">
<?php echo CHtml::activeLabel($user,'password'); ?>
<?php echo CHtml::activePasswordField($user,'password'); ?>
</div>
 
<div class="action">
<?php echo CHtml::activeCheckBox($user,'rememberMe'); ?>
Запомнить меня<br/>
<?php echo CHtml::submitButton('Login'); ?>
</div>
 
<?php echo CHtml::endForm(); ?>
</div><!-- yiiForm -->

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

Если использовать CSS стиль form.css, предоставляемый скриптом yiic, созданная форма будет выглядеть так:

Страница авторизации

Страница авторизации

Страница авторизации с сообщением об ошибке

Страница авторизации с сообщением об ошибке