首頁 後端開發 php教程 Yii使用Forms

Yii使用Forms

Aug 08, 2016 am 09:33 AM
email entry gt model yii

1.建立模型

a.加入基類

     use yii/base/Model

b.創建類繼承自基類f.注意裡面用[]括起來

例如:

<?<span>php

namespace app\models;

</span><span>use</span><span> yii\base\Model;

</span><span>class</span> EntryForm <span>extends</span><span> Model
{
    </span><span>public</span> <span>$name</span><span>;
    </span><span>public</span> <span>$email</span><span>;

    </span><span>public</span> <span>function</span><span> rules()
    {
        </span><span>return</span><span> [
            [[</span>'name', 'email'], 'required'],<span>
            [</span>'email', 'email'],<span>
        ];
    }
}</span>
登入後複製

此類別繼承自Yii 提供的一個基底類別 [[yiibaseModel]],該基底類別通常用來表示資料

補充:[[yiibaseModel]] 被用於普通模型類別的父類別並與資料表無關。 [[yiidbActiveRecord]] 通常是普通模型類別的父類別但與資料表有關聯(譯註:[[yiidbActiveRecord]] 類別其實也是繼承自 [[yiibaseModel]],增加了資料庫處理)。

EntryForm

類別包含 name

email

兩個公共成員,用來儲存使用者輸入的資料。它也包含一個名為 rules() 的方法,用來傳回資料驗證規則的集合。上面聲明的驗證規則表示: nameemail 值都是必須的

  • email 的值必須滿足email規則驗證 如果你有一個處理用戶提交資料的
  • EntryForm 對象,你可以呼叫它的 [[yiibaseModel::validate()|validate()]] 方法觸發資料驗證。如果有資料驗證失敗,將把 [[yiibaseModel::hasErrors|hasErrors]] 屬性設為 ture,想要知道具體發生什麼錯誤就呼叫 [[yiibaseModel::getErrors|getErrors]]。
  • <?<span>php
    </span><span>$model</span> = <span>new</span><span> EntryForm();
    </span><span>$model</span>->name = 'Qiang'<span>;
    </span><span>$model</span>->email = 'bad'<span>;
    </span><span>if</span> (<span>$model</span>-><span>validate()) {
        </span><span>//</span><span> 验证成功!</span>
    } <span>else</span><span> {
        </span><span>//</span><span> 失败!
        // 使用 $model->getErrors() 获取错误详情</span>
    }
    登入後複製

    2.建立操作

    下面你得在

    site 控制器中建立一個 entry

    操作用於新建的模型。操作的創建和使用已經在說一聲你好小節解釋了。

    <?<span>php
    
    namespace app\controllers;
    
    </span><span>use</span><span> Yii;
    </span><span>use</span><span> yii\web\Controller;
    </span><span>use</span><span> app\models\EntryForm;
    
    </span><span>class</span> SiteController <span>extends</span><span> Controller
    {
        </span><span>//</span><span> ...其它代码...</span>
    
        <span>public</span> <span>function</span><span> actionEntry()
        {
            </span><span>$model</span> = <span>new</span><span> EntryForm;
    
            </span><span>if</span> (<span>$model</span>->load(Yii::<span>$app</span>->request->post()) && <span>$model</span>-><span>validate()) {
                </span><span>//</span><span> 验证 $model 收到的数据
    
                // 做些有意义的事 ...</span>
    
                <span>return</span> <span>$this</span>->render('entry-confirm', ['model' => <span>$model</span><span>]);
            } </span><span>else</span><span> {
                </span><span>//</span><span> 无论是初始化显示还是数据验证错误</span>
                <span>return</span> <span>$this</span>->render('entry', ['model' => <span>$model</span><span>]);
            }
        }
    }</span>
    登入後複製
    該操作首先建立了一個 EntryForm 物件。然後嘗試從 $_POST
    蒐集用戶提交的數據,由 Yii 的 [[yiiwebRequest::post()]] 方法負責蒐集。如果模型成功填入資料(也就是說使用者已經提交了 HTML 表單),操作將會呼叫 [[yiibaseModel::validate()|validate()]] 去確保使用者提交的是有效資料。

    補充:表達式 Yii::$app 代表

    應用

    實例,它是一個全域可存取的單例。同時它也是一個服務定位器,能提供requestresponsedb 等等特定功能的組件。在上面的程式碼裡就是使用 request 元件來存取應用程式實例收到的 $_POST 資料。 使用者提交表單後,操作將會渲染一個名為 entry-confirm 的視圖去確認使用者輸入的資料。如果沒填表單就提交,或資料包含錯誤(譯者:如 email 格式不對),entry

    視圖將會渲染輸出,連同表單一起輸出的還有驗證錯誤的詳細資訊。

    注意:在這個簡單例子裡我們只是呈現了有效數據的確認頁。實務上你應該考慮使用 [[yiiwebController::refresh()|refresh()]] 或 [[yiiwebController::redirect()|redirect()]] 去避免表單重複提交問題

    3.建立視圖
    最後建立兩個視圖檔案

    entry-confirmentry

    。他們會被剛才創建的
    entry

    操作渲染。 entry-confirm 視圖簡單地顯示提交的 name 和 email 資料。視圖檔案保存在 views/site/entry-confirm.php

    <?<span>php
    </span><span>use</span><span> yii\helpers\Html;
    </span>?>
    <p>You have entered the following information:</p>
    
    <ul>
        <li><label>Name</label>: <?= Html::encode(<span>$model</span>->name) ?></li>
        <li><label>Email</label>: <?= Html::encode(<span>$model</span>->email) ?></li>
    </ul>
    登入後複製
    entry
    視圖顯示一個 HTML 表單。視圖檔案保存在 views/site/entry.php

    <?<span>php
    </span><span>use</span><span> yii\helpers\Html;
    </span><span>use</span><span> yii\widgets\ActiveForm;
    </span>?>
    <?php <span>$form</span> = ActiveForm::begin(); ?>
    
        <?= <span>$form</span>->field(<span>$model</span>, 'name') ?>
    
        <?= <span>$form</span>->field(<span>$model</span>, 'email') ?>
    
        <div <span>class</span>="form-group">
            <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
        </div>
    
    <?php ActiveForm::<span>end</span>(); ?>
    登入後複製
    視圖使用了一個功能強大的小部件 [[yiiwidgetsActiveForm|ActiveForm]] 去產生 HTML 表單。其中的 begin()
    和 end() 分別用來渲染表單的開始和關閉標籤。在這兩個方法之間使用了 [[yiiwidgetsActiveForm::field()|field()]] 方法去建立輸入框。第一個輸入框用於 “name”,第二個輸入框用於 “email”。之後使用 [[yiihelpersHtml::submitButton()]] 方法產生提交按鈕。

    <span>use</span><span> yii\helpers\Html;
    </span><span>use</span> yii\wigets\ActiveForm;
    登入後複製
              記得使用小部件,並需要引進這個兩個 以上就介紹了Yii使用Forms,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

華為GT3 Pro和GT4的差異是什麼? 華為GT3 Pro和GT4的差異是什麼? Dec 29, 2023 pm 02:27 PM

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

Python如何使用email、smtplib、poplib、imaplib模組收發郵件 Python如何使用email、smtplib、poplib、imaplib模組收發郵件 May 16, 2023 pm 11:44 PM

一封電子郵件的旅程是:MUA:MailUserAgent-郵件使用者代理程式。 (即類似Outlook的電子郵件軟體)MTA:MailTransferAgent-郵件傳輸代理,就是那些Email服務供應商,例如網易、新浪等等。 MDA:MailDeliveryAgent-郵件投遞代理。 Email服務提供者的某個伺服器寄件者->MUA->MTA->MTA->若

修復:截圖工具在 Windows 11 中不起作用 修復:截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

Trezor冷錢包:Model One與Model T的特性與使用指南 Trezor冷錢包:Model One與Model T的特性與使用指南 Jan 19, 2024 pm 04:12 PM

在許多中心化交易所出現問題後,越來越多的幣圈投資者開始將資產轉移到冷錢包中,以減少中心化交易所帶來的風險。本文將介紹全球最早的冷錢包供應商Trezor,自2014年推出首款冷錢包至今,在全球多個國家銷售。 Trezor的產品包括2014年推出的ModelOne和2018年推出的進階版本ModelT。以下將繼續介紹這兩款產品與其他冷錢包的差異。什麼是Trezor冷錢包? 2014年,Trezor推出了第一款冷皮夾ModelOne。除了常見的BTC、ETH、USDT等幣種外,該錢包還支援超過1000種其

如何使用PHP框架Yii開發一個高可用的雲端備份系統 如何使用PHP框架Yii開發一個高可用的雲端備份系統 Jun 27, 2023 am 09:04 AM

隨著雲端運算技術的不斷發展,資料的備份已經成為了每個企業必須要做的事情。在這樣的背景下,開發一款高可用的雲端備份系統尤其重要。而PHP框架Yii是一款功能強大的框架,可以幫助開發者快速建立高效能的Web應用程式。以下將介紹如何使用Yii框架開發一款高可用的雲端備份系統。設計資料庫模型在Yii框架中,資料庫模型是非常重要的一環。因為資料備份系統需要用到很多的表和關

Symfony vs Yii2:哪個框架比較適合開發大型Web應用? Symfony vs Yii2:哪個框架比較適合開發大型Web應用? Jun 19, 2023 am 10:57 AM

隨著Web應用需求的不斷增長,開發者在選擇開發框架方面也越來越有選擇的空間。 Symfony和Yii2是兩個備受歡迎的PHP框架,它們都具有強大的功能和效能,但在面對需要開發大型網路應用程式時,哪個框架更適合呢?接下來我們將對Symphony和Yii2進行比較分析,以幫助你更好地進行選擇。基本概述Symphony是一個由PHP編寫的開源Web應用框架,它是建立

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

隨著互聯網的不斷發展,Web應用程式開發的需求也越來越高。對於開發人員而言,開發應用程式需要一個穩定、高效、強大的框架,這樣可以提高開發效率。 Yii是一款領先的高效能PHP框架,它提供了豐富的特性和良好的性能。 Yii3是Yii框架的下一代版本,它在Yii2的基礎上進一步優化了效能和程式碼品質。在這篇文章中,我們將介紹如何使用Yii3框架來開發PHP應用程式。

Yii框架中的資料查詢:有效率地存取數據 Yii框架中的資料查詢:有效率地存取數據 Jun 21, 2023 am 11:22 AM

Yii框架是一個開源的PHPWeb應用程式框架,提供了眾多的工具和元件,簡化了Web應用程式開發的流程,其中資料查詢是其中一個重要的元件之一。在Yii框架中,我們可以使用類似SQL的語法來存取資料庫,從而有效率地查詢和操作資料。 Yii框架的查詢建構器主要包括以下幾種類型:ActiveRecord查詢、QueryBuilder查詢、命令查詢和原始SQL查詢

See all articles