PHP 開発フレームワーク Yii Framework チュートリアル (11) UI コンポーネント ActiveForm の例

黄舟
リリース: 2023-03-05 07:32:02
オリジナル
1113 人が閲覧しました

前回の Yii Framework 開発チュートリアル (7) CHtml を使用した Form の作成と Yii Framework 開発チュートリアル (8) FormModel を使用した紹介で、CActiveForm について簡単に紹介しました。数日後にはクリスマスがやってきます。サンタ クロースがみんながもらいたいクリスマス プレゼントとクリスマス ディナーに食べたい食べ物についてのアンケートを作るのを手伝ってください。)

コードの一部は、後続の例のフレームワークとしてここで共有されます。基本的に Hello World の例をコピーし、空の DataModel を追加し、デフォルトのコントローラー (SiteController) とデフォルトのアクション (actionIndex) を使用し、デフォルトの構成ファイルを使用します。 、コードのダウンロード。

HTML フォームを介してユーザー データを収集することは、Web プログラム開発の主要なタスクの 1 つです。フォームの設計に加えて、開発者はフォームに既存のデータまたはデフォルトのデータを入力し、ユーザー入力を検証し、無効な入力に対して適切なエラー メッセージを表示し、入力を永続ストレージに保存する必要もあります。 Yii は、MVC 構造によりこのワークフローを大幅に簡素化します。

Yii でフォームを処理する場合、通常は次の手順が必要です:

収集されるデータフィールドを表すモデルクラスを作成します。

フォームの送信に応じてコントローラーアクションを作成します。

ビュースクリプトでコントローラーアクションに関連するフォームを作成します。

データモデルの作成

class
DataModel extends CFormModel{public $firstName;public $lastName;
public $favouriteGift;
public $favouriteDinner;
public function rules(){return array(array('firstName, lastName', 'required'),
array('favouriteGift,favouriteDinner', 'safe'));}
static $gifts=array('1'=>'iPad','2'=>'Remote control helicopter','3'=>'60 inch 3D LED TV','4'=>'Holy Bible',);
static $meals=array('1'=>'Egg','2'=>'Ham','3'=>'Chicken','4'=>'Pork','5'=>'Beer','6'=>'Coke','7'=>'Wine',);}
ログイン後にコピー

firstName、lastName はユーザーの名前を記録するために使用され、$favourite Gift と $favouriteDinner はユーザーのギフトと食べ物の名前を記録するために使用されます。 $gifts、$meals は、ユーザーが利用できるギフトの種類と食品の種類を静的に定義します。ここで注意すべき点は、firstName と lastName は必須であり、$favourite Gift と $favouriteDinner はコピーしても安全に設定されているということです。これらはモデルのルールによって定義されています。

アクションの定義

SiteController の Action メソッドを変更します。

public function actionIndex(){$model=new DataModel();
if(!emptyempty($_POST['DataModel'])){$model->attributes=$_POST['DataModel'];
if($model->validate()){$this->render('choice', array('model' => $model,));
return;}}
$this->render('index', array('model' => $model,));}
ログイン後にコピー

ここでは 2 つのビューが定義されています。インデックスはユーザー入力の取得に使用され、choice はユーザーの選択結果を表示します。 $model->attributes=$_POST ['DataModel']; 安全な属性の割り当てで説明したように、このコード行はユーザーが送信したデータをモデルに設定します。 Attributes 属性は CModel によって定義され、名前と値のペアの配列を受け取り、各値を対応するモデル属性に割り当てます。

View の定義

まず、index.php を定義します。この例では、CActiveForm がクライアント側とサーバー側の両方でシームレスで一貫した検証を提供します。

>beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'focus'=>array($model,'firstName'),
)); ?>
ログイン後にコピー

この例は比較的単純です。これらの複雑なチェックは使用されません。FirstName と LastName が空でないことだけが必要です。これは DataModel のルールで定義されています。

beginWidget('CActiveForm'); ?>
 
errorSummary($model); ?>
 
label($model,'firstName'); ?>textField($model,'firstName') ?>
 
 
label($model,'lastName'); ?>textField($model,'lastName') ?>
 
 
Choose your Christmas Gift
radioButtonList($model,'favouriteGift',DataModel::$gifts) ?>
 
 
 
 
Choose your Christmas dinner
checkBoxList($model,'favouriteDinner',DataModel::$meals) ?>
 
 
 
 
 
endWidget(); ?>
View Choice 就更简单,显示用户选择结果:
 
Christmas "; ?>firstName . ' ' . $model->lastName . '.' ;?>
 
You will be givenecho DataModel::$gifts[$model->favouriteGift];?>on Christmas Day.
 
 
And you will haveforeach($model->favouriteDinner as $dinner){echo DataModel::$meals[$dinner] . ' ';}?>
for Christmas dinner.
ログイン後にコピー


実行結果は以下の通りです:

vcyzzCgxMSkgVUnX6bz+IEFjdGl2ZUZvcm3KvsD9" src="/uploadfile/2016/0106/20160106062558152.png" />
ログイン後にコピー

上記は、PHP 開発フレームワーク Yii Framework チュートリアル (11) UI コンポーネント ActiveForm のサンプルの内容です。 PHP 中国語 Web サイト (www.php .cn) に注意してください。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート