mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 11:06:54 +01:00
96 lines
4.9 KiB
Plaintext
96 lines
4.9 KiB
Plaintext
Створення форми
|
||
===============
|
||
|
||
Написання форми не повинно викликати ніяких труднощів. Ми починаємо із тега `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`, створена форма буде виглядати так:
|
||
|
||

|
||
|
||

|
||
|
||
Починаючи з версії 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 -->
|
||
~~~
|
||
|
||
<div class="revision">$Id: form.view.txt 1751 2010-01-25 17:21:31Z qiang.xue $</div> |