亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) php框架 YII yii框架如何使用表單

yii框架如何使用表單

Nov 26, 2019 pm 05:09 PM
yii

yii框架如何使用表單

如何創(chuàng)建一個(gè)讓用戶提交數(shù)據(jù)的表單頁(yè)。 該頁(yè)將顯示一個(gè)包含 name 輸入框和 email 輸入框的表單。 當(dāng)提交這兩部分信息后,頁(yè)面將會(huì)顯示用戶所輸入的信息。 ? ? ? ? ?(推薦學(xué)習(xí):yii框架

為了實(shí)現(xiàn)這個(gè)目標(biāo),除了創(chuàng)建一個(gè)操作和兩個(gè)視圖外, 還需要?jiǎng)?chuàng)建一個(gè)模型。

通過(guò)本教程,你將會(huì)學(xué)到:

創(chuàng)建一個(gè)模型代表用戶通過(guò)表單輸入的數(shù)據(jù)

聲明規(guī)則去驗(yàn)證輸入的數(shù)據(jù)

在視圖中生成一個(gè) HTML 表單

創(chuàng)建模型

模型類 EntryForm 代表從用戶那請(qǐng)求的數(shù)據(jù), 該類如下所示并存儲(chǔ)在 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 提供的一個(gè)基類 yii\base\Model, 該基類通常用來(lái)表示數(shù)據(jù)。

信息: yii\base\Model 被用于普通模型類的父類并與數(shù)據(jù)表無(wú)關(guān)。yii\db\ActiveRecord 通常是普通模型類的父類但與數(shù)據(jù)表有關(guān)聯(lián)(譯注:yii\db\ActiveRecord 類其實(shí)也是繼承自 yii\base\Model,增加了數(shù)據(jù)庫(kù)處理)。

EntryForm 類包含 name 和 email 兩個(gè)公共成員, 用來(lái)儲(chǔ)存用戶輸入的數(shù)據(jù)。它還包含一個(gè)名為 rules() 的方法, 用來(lái)返回?cái)?shù)據(jù)驗(yàn)證規(guī)則的集合。上面聲明的驗(yàn)證規(guī)則表示:

name 和 email 值都是必須的

email 的值必須滿足email規(guī)則驗(yàn)證

如果你有一個(gè)處理用戶提交數(shù)據(jù)的 EntryForm 對(duì)象, 你可以調(diào)用它的 validate() 方法觸發(fā)數(shù)據(jù)驗(yàn)證。 如果有數(shù)據(jù)驗(yàn)證失敗,將把 hasErrors 屬性設(shè)為 ture, 想要知道具體發(fā)生什么錯(cuò)誤就調(diào)用 getErrors。

<?php
$model = new EntryForm();
$model->name = &#39;Qiang&#39;;
$model->email = &#39;bad&#39;;
if ($model->validate()) {
    // 驗(yàn)證成功!
} else {
    // 失??!
    // 使用 $model->getErrors() 獲取錯(cuò)誤詳情
}

創(chuàng)建動(dòng)作

下面你得在 site 控制器中創(chuàng)建一個(gè) entry 操作用于新建的模型。

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\EntryForm;

class SiteController extends Controller
{
    // ...現(xiàn)存的代碼...

    public function actionEntry()
    {
        $model = new EntryForm;

        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            // 驗(yàn)證 $model 收到的數(shù)據(jù)

            // 做些有意義的事 ...

            return $this->render(&#39;entry-confirm&#39;, [&#39;model&#39; => $model]);
        } else {
            // 無(wú)論是初始化顯示還是數(shù)據(jù)驗(yàn)證錯(cuò)誤
            return $this->render(&#39;entry&#39;, [&#39;model&#39; => $model]);
        }
    }
}

該操作首先創(chuàng)建了一個(gè) EntryForm 對(duì)象。然后嘗試從 $_POST 搜集用戶提交的數(shù)據(jù), 由 Yii 的 yii\web\Request::post() 方法負(fù)責(zé)搜集。 如果模型被成功填充數(shù)據(jù)(也就是說(shuō)用戶已經(jīng)提交了 HTML 表單), 操作將調(diào)用 validate() 去確保用戶提交的是有效數(shù)據(jù)。

信息: 表達(dá)式 Yii::$app 代表應(yīng)用實(shí)例,它是一個(gè)全局可訪問(wèn)的單例。 同時(shí)它也是一個(gè)服務(wù)定位器, 能提供 request,response,db 等等特定功能的組件。 在上面的代碼里就是使用 request 組件來(lái)訪問(wèn)應(yīng)用實(shí)例收到的 $_POST 數(shù)據(jù)。

用戶提交表單后,操作將會(huì)渲染一個(gè)名為 entry-confirm 的視圖去確認(rèn)用戶輸入的數(shù)據(jù)。 如果沒(méi)填表單就提交,或數(shù)據(jù)包含錯(cuò)誤(譯者:如 email 格式不對(duì)), entry 視圖將會(huì)渲染輸出,連同表單一起輸出的還有驗(yàn)證錯(cuò)誤的詳細(xì)信息。

注意: 在這個(gè)簡(jiǎn)單例子里我們只是呈現(xiàn)了有效數(shù)據(jù)的確認(rèn)頁(yè)面。 實(shí)踐中你應(yīng)該考慮使用 refresh() 或 redirect() 去避免表單重復(fù)提交問(wèn)題。

創(chuàng)建視圖 ?

最后創(chuàng)建兩個(gè)視圖文件 entry-confirm 和 entry。 他們會(huì)被剛才創(chuàng)建的 entry 操作渲染。

entry-confirm 視圖簡(jiǎn)單地顯示提交的 name 和 email 數(shù)據(jù)。視圖文件應(yīng)該保存在 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>

entry 視圖顯示一個(gè) HTML 表單。視圖文件應(yīng)該保存在 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(); ?>

用瀏覽器訪問(wèn)下面的 URL 看它能否工作:

http://hostname/index.php?r=site/entry

你會(huì)看到一個(gè)包含兩個(gè)輸入框的表單的頁(yè)面。每個(gè)輸入框的前面都有一個(gè)標(biāo)簽指明應(yīng)該輸入的數(shù)據(jù)類型。 如果什么都不填就點(diǎn)擊提交按鈕,或填入格式不正確的 email 地址,將會(huì)看到在對(duì)應(yīng)的輸入框下顯示錯(cuò)誤信息。

yii-5.png輸入有效的 name 和 email 信息并提交后, 將會(huì)看到一個(gè)顯示你所提交數(shù)據(jù)的確認(rèn)頁(yè)面。

yii-6.png

以上是yii框架如何使用表單的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72
Yii2 vs Phalcon:哪個(gè)框架更適合開(kāi)發(fā)顯卡渲染應(yīng)用? Yii2 vs Phalcon:哪個(gè)框架更適合開(kāi)發(fā)顯卡渲染應(yīng)用? Jun 19, 2023 am 08:09 AM

在當(dāng)前信息時(shí)代,大數(shù)據(jù)、人工智能、云計(jì)算等技術(shù)已經(jīng)成為了各大企業(yè)關(guān)注的熱點(diǎn)。在這些技術(shù)中,顯卡渲染技術(shù)作為一種高性能圖形處理技術(shù),受到了越來(lái)越多的關(guān)注。顯卡渲染技術(shù)被廣泛應(yīng)用于游戲開(kāi)發(fā)、影視特效、工程建模等領(lǐng)域。而對(duì)于開(kāi)發(fā)者來(lái)說(shuō),選擇一個(gè)適合自己項(xiàng)目的框架,是一個(gè)非常重要的決策。在當(dāng)前的語(yǔ)言中,PHP是一種頗具活力的語(yǔ)言,一些優(yōu)秀的PHP框架如Yii2、Ph

Yii框架中的數(shù)據(jù)查詢:高效地訪問(wèn)數(shù)據(jù) Yii框架中的數(shù)據(jù)查詢:高效地訪問(wèn)數(shù)據(jù) Jun 21, 2023 am 11:22 AM

Yii框架是一個(gè)開(kāi)源的PHPWeb應(yīng)用程序框架,提供了眾多的工具和組件,簡(jiǎn)化了Web應(yīng)用程序開(kāi)發(fā)的流程,其中數(shù)據(jù)查詢是其中一個(gè)重要的組件之一。在Yii框架中,我們可以使用類似SQL的語(yǔ)法來(lái)訪問(wèn)數(shù)據(jù)庫(kù),從而高效地查詢和操作數(shù)據(jù)。Yii框架的查詢構(gòu)建器主要包括以下幾種類型:ActiveRecord查詢、QueryBuilder查詢、命令查詢和原始SQL查詢

Symfony vs Yii2:哪個(gè)框架更適合開(kāi)發(fā)大型Web應(yīng)用? Symfony vs Yii2:哪個(gè)框架更適合開(kāi)發(fā)大型Web應(yīng)用? Jun 19, 2023 am 10:57 AM

隨著Web應(yīng)用需求的不斷增長(zhǎng),開(kāi)發(fā)者們?cè)谶x擇開(kāi)發(fā)框架方面也越來(lái)越有選擇的余地。Symfony和Yii2是兩個(gè)備受歡迎的PHP框架,它們都具有強(qiáng)大的功能和性能,但在面對(duì)需要開(kāi)發(fā)大型Web應(yīng)用時(shí),哪個(gè)框架更適合呢?接下來(lái)我們將對(duì)Symphony和Yii2進(jìn)行比較分析,以幫助你更好地進(jìn)行選擇?;靖攀鯯ymphony是一個(gè)由PHP編寫(xiě)的開(kāi)源Web應(yīng)用框架,它是建立

php如何使用Yii3框架? php如何使用Yii3框架? May 31, 2023 pm 10:42 PM

隨著互聯(lián)網(wǎng)的不斷發(fā)展,Web應(yīng)用程序開(kāi)發(fā)的需求也越來(lái)越高。對(duì)于開(kāi)發(fā)人員而言,開(kāi)發(fā)應(yīng)用程序需要一個(gè)穩(wěn)定、高效、強(qiáng)大的框架,這樣可以提高開(kāi)發(fā)效率。Yii是一款領(lǐng)先的高性能PHP框架,它提供了豐富的特性和良好的性能。Yii3是Yii框架的下一代版本,它在Yii2的基礎(chǔ)上進(jìn)一步優(yōu)化了性能和代碼質(zhì)量。在這篇文章中,我們將介紹如何使用Yii3框架來(lái)開(kāi)發(fā)PHP應(yīng)用程序。

如何使用PHP框架Yii開(kāi)發(fā)一個(gè)高可用的云備份系統(tǒng) 如何使用PHP框架Yii開(kāi)發(fā)一個(gè)高可用的云備份系統(tǒng) Jun 27, 2023 am 09:04 AM

隨著云計(jì)算技術(shù)的不斷發(fā)展,數(shù)據(jù)的備份已經(jīng)成為了每個(gè)企業(yè)必須要做的事情。在這樣的背景下,開(kāi)發(fā)一款高可用的云備份系統(tǒng)尤為重要。而PHP框架Yii是一款功能強(qiáng)大的框架,可以幫助開(kāi)發(fā)者快速構(gòu)建高性能的Web應(yīng)用程序。下面將介紹如何使用Yii框架開(kāi)發(fā)一款高可用的云備份系統(tǒng)。設(shè)計(jì)數(shù)據(jù)庫(kù)模型在Yii框架中,數(shù)據(jù)庫(kù)模型是非常重要的一部分。因?yàn)閿?shù)據(jù)備份系統(tǒng)需要用到很多的表和關(guān)

php框架laravel和yii區(qū)別是什么 php框架laravel和yii區(qū)別是什么 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要區(qū)別在于設(shè)計(jì)理念、功能特性和使用場(chǎng)景。1.Laravel注重開(kāi)發(fā)的簡(jiǎn)潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開(kāi)發(fā)和初學(xué)者。2.Yii強(qiáng)調(diào)性能和效率,適用于高負(fù)載應(yīng)用,提供高效的ActiveRecord和緩存系統(tǒng),但學(xué)習(xí)曲線較陡。

yii與Docker:容器化和部署您的應(yīng)用程序 yii與Docker:容器化和部署您的應(yīng)用程序 Apr 02, 2025 pm 02:13 PM

使用Docker容器化和部署Yii應(yīng)用的步驟包括:1.創(chuàng)建Dockerfile,定義鏡像構(gòu)建過(guò)程;2.使用DockerCompose啟動(dòng)Yii應(yīng)用和MySQL數(shù)據(jù)庫(kù);3.優(yōu)化鏡像大小和性能。這不僅涉及到具體的技術(shù)操作,還包括理解Dockerfile的工作原理和最佳實(shí)踐,以確保高效、可靠的部署。

Yii2 vs Symfony:哪個(gè)框架更適合API開(kāi)發(fā)? Yii2 vs Symfony:哪個(gè)框架更適合API開(kāi)發(fā)? Jun 18, 2023 pm 11:00 PM

隨著互聯(lián)網(wǎng)的快速發(fā)展,API成為了各種應(yīng)用間數(shù)據(jù)交換的重要方式。因此,開(kāi)發(fā)一款易于維護(hù)、高效、穩(wěn)定的API框架變得越來(lái)越重要。而在選擇API框架時(shí),Yii2和Symfony是兩個(gè)備受開(kāi)發(fā)者歡迎的選擇。那么,哪一個(gè)更適合API開(kāi)發(fā)呢?本文將對(duì)這兩個(gè)框架進(jìn)行比較,并給出一些結(jié)論。一、基本介紹Yii2和Symfony都是成熟的PHP框架,都有相應(yīng)的擴(kuò)展,可以用于開(kāi)

See all articles