0 follower

フォームの作成

login ビューを書くのは簡単な事です。始めに、先ほど述べた login アクション のURLを属性とする form タグを書きます。その後 LoginForm クラスで定義された属性の為のインプットフィールドを挿入します。 最後にユーザがクリックしてフォームの内容を送信する為の送信ボタンを 挿入します。これらは全て、単純なHTMLコードで成し遂げられます。

Yiiはビューの作成を手助けするいくつかのヘルパークラスを供給します。 例えば、テキスト入力フィールドを作成する為に、CHtml::textField() をコールする事が出来ます; ドロップダウンリストの作成の為には、 CHtml::dropDownList() をコールできます。

情報: 素のHTMLコードと比べて、同じような量のコードが必要なら、 ヘルパーを使う事に何の利益があるのかと不思議に思うかも知れません。 それに対する回答は、ヘルパーは、ただのHTMLコードよりも多くの機能を もたらすと言う事です。例えば下記のコードは、もしユーザが値を変更した時に、 送信をトリガーする事が可能なテキスト入力フィールドを生成します。

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

このヘルパーが無ければ、ごちゃごちゃしたJavaScriptをあちこちへ 書く必要があるでしょう。

下記では CHtml をログインフォームの作成に使用しています。ここでは $user という変数が 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'); ?>
Remember me next time<br/>
<?php echo CHtml::submitButton('Login'); ?>
</div>
 
<?php echo CHtml::endForm(); ?>
</div><!-- yiiForm -->

上記のコードは、よりダイナミックなフォームを生成します。例えば、 CHtml::activeLabel() はモデルの属性で定められたものに結びついたラベル を生成します。もし属性が入力エラーを持っていた場合、ラベルのCSSクラスは error に変更され、表示はラベルに適したCSSスタイルへ変更されるでしょう。 同様に、CHtml::activeTextField() は、定義されたモデルの属性の為の テキスト入力フィールドを生成し、あらゆる入力エラー時に、 そのCSSクラスを変更します。

yiic スクリプトで供給される、form.css というCSSスタイルファイル を使用した場合、それによって生成されるフォームは下記の様になるでしょう:

The login page

The login page

The login with error page

The login with error page