国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Yii使用Forms

2019-11-15 01:58:13
字體:
來源:轉載
供稿:網友
Yii使用Forms

1.創建模型

a.加入基類

use yii/base/Model

b.創建類繼承自基類

c.創建所需要的變量

e.定義規則

f.注意里面用[]括起來

例如:

<?phpnamespace app/models;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 類包含 nameemail 兩個公共成員,用來儲存用戶輸入的數據。它還包含一個名為 rules() 的方法,用來返回數據驗證規則的集合。上面聲明的驗證規則表示:

  • nameemail 值都是必須的
  • email 的值必須滿足email規則驗證

如果你有一個處理用戶提交數據的 EntryForm 對象,你可以調用它的 [[yii/base/Model::validate()|validate()]] 方法觸發數據驗證。如果有數據驗證失敗,將把 [[yii/base/Model::hasErrors|hasErrors]] 屬性設為 ture,想要知道具體發生什么錯誤就調用 [[yii/base/Model::getErrors|getErrors]]。

<?php$model = new EntryForm();$model->name = 'Qiang';$model->email = 'bad';if ($model->validate()) {    // 驗證成功!} else {    // 失敗!    // 使用 $model->getErrors() 獲取錯誤詳情}

2.創建操作

下面你得在 site 控制器中創建一個 entry 操作用于新建的模型。操作的創建和使用已經在說一聲你好小節中解釋了。

<?phpnamespace 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 表單),操作將調用 [[yii/base/Model::validate()|validate()]] 去確保用戶提交的是有效數據。

補充:表達式 Yii::$app 代表應用實例,它是一個全局可訪問的單例。同時它也是一個服務定位器,能提供requestresponsedb 等等特定功能的組件。在上面的代碼里就是使用 request 組件來訪問應用實例收到的 $_POST 數據。

用戶提交表單后,操作將會渲染一個名為 entry-confirm 的視圖去確認用戶輸入的數據。如果沒填表單就提交,或數據包含錯誤(譯者:如 email 格式不對),entry 視圖將會渲染輸出,連同表單一起輸出的還有驗證錯誤的詳細信息。

注意:在這個簡單例子里我們只是呈現了有效數據的確認頁面。實踐中你應該考慮使用 [[yii/web/Controller::refresh()|refresh()]] 或 [[yii/web/Controller::redirect()|redirect()]] 去避免表單重復提交問題

3.創建視圖

最后創建兩個視圖文件 entry-confirmentry。他們會被剛才創建的 entry 操作渲染。

entry-confirm 視圖簡單地顯示提交的 name 和 email 數據。視圖文件保存在 views/site/entry-confirm.php

<?phpuse 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>

entry 視圖顯示一個 HTML 表單。視圖文件保存在 views/site/entry.php

<?phpuse 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-

視圖使用了一個功能強大的小部件 [[yii/widgets/ActiveForm|ActiveForm]] 去生成 HTML 表單。其中的 begin()end() 分別用來渲染表單的開始和關閉標簽。在這兩個方法之間使用了 [[yii/widgets/ActiveForm::field()|field()]] 方法去創建輸入框。第一個輸入框用于 “name”,第二個輸入框用于 “email”。之后使用 [[yii/helpers/Html::submitButton()]] 方法生成提交按鈕。

use yii/helpers/Html;use yii/wigets/ActiveForm;

記住使用小部件,需要引入這個兩個


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南宫市| 阳信县| 康保县| 射阳县| 南岸区| 威远县| 辰溪县| 南靖县| 同心县| 镇远县| 前郭尔| 罗源县| 铅山县| 富川| 织金县| 保亭| 保康县| 邵武市| 托克托县| 汽车| 眉山市| 正蓝旗| 贺兰县| 类乌齐县| 鹤峰县| 高邮市| 偃师市| 离岛区| 连江县| 阳泉市| 牡丹江市| 辰溪县| 安丘市| 庆安县| 噶尔县| 乐安县| 旬阳县| 贺兰县| 万盛区| 林周县| 新源县|