ユーザーがデータを送信できるフォーム ページを作成する方法。このページには、名前入力ボックスと電子メール入力ボックスを含むフォームが表示されます。これら 2 つの部分の情報を送信すると、ユーザーが入力した情報がページに表示されます。 (推奨学習: yii フレームワーク)
この目標を達成するには、1 つの操作と 2 つのビューの作成に加えて、モデルも作成する必要があります。
このチュートリアルを通じて、次のことを学習します:
ユーザーがフォームを通じて入力したデータを表すモデルを作成する
検証するルールを宣言する入力データ
ビューでの HTML フォームの生成
モデルの作成
モデル クラス EntryForm は、ユーザーから要求されたデータを表します。は次のようになり、models/EntryForm.php ファイルに保存されます。
<?php namespace app\models; use Yii; use yii\base\Model; class EntryForm extends Model { public $name; public $email; public function rules() { return [ [['name', 'email'], 'required'], ['email', 'email'], ]; } }
このクラスは、Yii が提供する基本クラス yii\base\Model を継承しており、通常はデータを表すために使用されます。
信息: yii\base\Model 被用于普通模型类的父类并与数据表无关。yii\db\ActiveRecord 通常是普通模型类的父类但与数据表有关联(译注:yii\db\ActiveRecord 类其实也是继承自 yii\base\Model,增加了数据库处理)。
EntryForm クラスには、name と email という 2 つのパブリック メンバーが含まれており、ユーザーが入力したデータを保存するために使用されます。データ検証ルールのコレクションを返す rules() というメソッドも含まれています。上記で宣言された検証ルールは次のことを示しています:
名前と電子メールの値は両方とも必須です
電子メールの値は電子メール ルールの検証を満たす必要があります
システムがある場合ユーザーが送信したデータ EntryForm オブジェクトを処理する場合、その validate() メソッドを呼び出してデータ検証をトリガーできます。データ検証に失敗した場合、hasErrors 属性は true に設定されます。どのようなエラーが発生したかを知りたい場合は、getErrors を呼び出します。
<?php $model = new EntryForm(); $model->name = 'Qiang'; $model->email = 'bad'; if ($model->validate()) { // 验证成功! } else { // 失败! // 使用 $model->getErrors() 获取错误详情 }
アクションの作成
次に、サイト コントローラーで新しいモデルのエントリ操作を作成する必要があります。
<?php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\EntryForm; class SiteController extends Controller { // ...现存的代码... public function actionEntry() { $model = new EntryForm; if ($model->load(Yii::$app->request->post()) && $model->validate()) { // 验证 $model 收到的数据 // 做些有意义的事 ... return $this->render('entry-confirm', ['model' => $model]); } else { // 无论是初始化显示还是数据验证错误 return $this->render('entry', ['model' => $model]); } } }
この操作では、まず EntryForm オブジェクトが作成されます。次に、ユーザーが送信したデータを $_POST から収集してみます。これは、Yii の yii\web\Request::post() メソッドによって収集されます。モデルにデータが正常に入力された場合 (つまり、ユーザーが HTML フォームを送信した場合)、操作は validate() を呼び出して、ユーザーが有効なデータを送信したことを確認します。
信息: 表达式 Yii::$app 代表应用实例,它是一个全局可访问的单例。 同时它也是一个服务定位器, 能提供 request,response,db 等等特定功能的组件。 在上面的代码里就是使用 request 组件来访问应用实例收到的 $_POST 数据。
ユーザーがフォームを送信すると、操作により、entry-confirm という名前のビューがレンダリングされ、ユーザーが入力したデータを確認します。フォームに記入せずにフォームが送信された場合、またはデータにエラーが含まれている場合 (翻訳者: 電子メールの形式が間違っているなど)、エントリ ビューはフォームと検証エラーの詳細とともに出力をレンダリングします。
注: この単純な例では、有効なデータを含む確認ページのみが表示されます。実際には、フォームの繰り返し送信の問題を回避するために、refresh() または redirect() の使用を検討する必要があります。
ビューを作成しますか?
最後に、エントリ確認とエントリの 2 つのビュー ファイルを作成します。これらは、作成したばかりの入力操作によってレンダリングされます。
入力確認ビューには、送信された名前と電子メール データが表示されるだけです。ビュー ファイルは、views/site/entry-confirm.php に保存する必要があります。
<?php use yii\helpers\Html; ?> <p>You have entered the following information:</p> <ul> <li><label>Name</label>: <?= Html::encode($model->name) ?></li> <li><label>Email</label>: <?= Html::encode($model->email) ?></li> </ul>
エントリ ビューには HTML フォームが表示されます。ビュー ファイルは、views/site/entry.php に保存する必要があります。
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; ?> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'name') ?> <?= $form->field($model, 'email') ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?>
ブラウザを使用して次の URL にアクセスし、動作するかどうかを確認します。
http://hostname/index.php?r=site/entry
2 つの入力ボックスのあるフォームを含むページが表示されます。各入力ボックスの前には、入力する必要があるデータの種類を示すラベルがあります。何も入力せずに送信ボタンをクリックしたり、間違った形式の電子メール アドレスを入力したりすると、対応する入力ボックスの下にエラー メッセージが表示されます。
有効な名前と電子メール情報を入力して送信すると、送信したデータを示す確認ページが表示されます。
以上がyii フレームワークでフォームを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。