yii フレームワークでフォームを使用する方法

(*-*)浩
リリース: 2019-11-26 17:09:25
オリジナル
2295 人が閲覧しました

yii フレームワークでフォームを使用する方法

ユーザーがデータを送信できるフォーム ページを作成する方法。このページには、名前入力ボックスと電子メール入力ボックスを含むフォームが表示されます。これら 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 [
            [[&#39;name&#39;, &#39;email&#39;], &#39;required&#39;],
            [&#39;email&#39;, &#39;email&#39;],
        ];
    }
}
ログイン後にコピー

このクラスは、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 = &#39;Qiang&#39;;
$model->email = &#39;bad&#39;;
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(&#39;entry-confirm&#39;, [&#39;model&#39; => $model]);
        } else {
            // 无论是初始化显示还是数据验证错误
            return $this->render(&#39;entry&#39;, [&#39;model&#39; => $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, &#39;name&#39;) ?>
    <?= $form->field($model, &#39;email&#39;) ?>
    <div class="form-group">
        <?= Html::submitButton(&#39;Submit&#39;, [&#39;class&#39; => &#39;btn btn-primary&#39;]) ?>
    </div>
<?php ActiveForm::end(); ?>
ログイン後にコピー

ブラウザを使用して次の URL にアクセスし、動作するかどうかを確認します。

http://hostname/index.php?r=site/entry
ログイン後にコピー

2 つの入力ボックスのあるフォームを含むページが表示されます。各入力ボックスの前には、入力する必要があるデータの種類を示すラベルがあります。何も入力せずに送信ボタンをクリックしたり、間違った形式の電子メール アドレスを入力したりすると、対応する入力ボックスの下にエラー メッセージが表示されます。

yii フレームワークでフォームを使用する方法有効な名前と電子メール情報を入力して送信すると、送信したデータを示す確認ページが表示されます。

yii フレームワークでフォームを使用する方法

以上がyii フレームワークでフォームを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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