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

?? ??? ??
閱讀前篇 簡(jiǎn)介 Yii 是什么 從 Yii 1.1 升級(jí) 入門 安裝 Yii 運(yùn)行應(yīng)用 第一次問(wèn)候 使用Forms 數(shù)據(jù)庫(kù)應(yīng)用 使用 Gii 生成代碼 進(jìn)階 應(yīng)用結(jié)構(gòu) 概述 入口腳本 應(yīng)用(Applications) 應(yīng)用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過(guò)濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴(kuò)展(Extensions) 請(qǐng)求處理 運(yùn)行概述 啟動(dòng)引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請(qǐng)求(Requests) 響應(yīng)(Responses) Sessions 和 Cookies 錯(cuò)誤處理(Handling Errors) 日志(Logging) 關(guān)鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動(dòng)加載(Autoloading) 服務(wù)定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數(shù)據(jù)庫(kù)工作 數(shù)據(jù)庫(kù)訪問(wèn) (Data Access Objects) 查詢生成器(Query Builder) 活動(dòng)記錄(Active Record) 數(shù)據(jù)庫(kù)遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數(shù)據(jù) 創(chuàng)建表單(Creating Forms) 輸入驗(yàn)證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復(fù)合表單(Getting Data for Multiple Models) 顯示數(shù)據(jù) 格式化輸出數(shù)據(jù)(Data Formatting) 分頁(yè)(Pagination) 排序(Sorting) 數(shù)據(jù)提供器(Data Providers) 數(shù)據(jù)小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認(rèn)證(Authentication) 授權(quán)(Authorization) 處理密碼(Working with Passwords) 客戶端認(rèn)證(Auth Clients) 最佳安全實(shí)踐(Best Practices) 緩存 概述 數(shù)據(jù)緩存 片段緩存 頁(yè)面緩存 HTTP 緩存 RESTfull Web服務(wù) 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(yīng)(Response Formatting) 授權(quán)認(rèn)證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯(cuò)誤處理(Error Handling) 開(kāi)發(fā)工具 調(diào)試工具欄和調(diào)試器 使用Gii生成代碼 生成API文檔 測(cè)試 概述(Overview) 配置測(cè)試環(huán)境(Testing environment setup) 單元測(cè)試(Unit Tests) 功能測(cè)試(Function Tests) 驗(yàn)收測(cè)試(Acceptance Tests) 測(cè)試夾具(Fixtures) 高級(jí)專題 高級(jí)應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺(tái)命令 核心驗(yàn)證器(Core Validators) 國(guó)際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
??

小部件

小部件

小部件是在?視圖?中使用的可重用單元,使用面向?qū)ο蠓绞絼?chuàng)建復(fù)雜和可配置用戶界面單元。 例如,日期選擇器小部件可生成一個(gè)精致的允許用戶選擇日期的日期選擇器, 你只需要在視圖中插入如下代碼:

<?phpuse yii\jui\DatePicker;
?><?= DatePicker::widget(['name' => 'date']) ?>

Yii提供許多優(yōu)秀的小部件,比如yii\widgets\ActiveForm, [yii\widgets\Menu|menu]],?jQuery UI widgets,?Twitter Bootstrap widgets。 接下來(lái)介紹小部件的基本知識(shí),如果你想了解某個(gè)小部件請(qǐng)參考對(duì)應(yīng)的類API文檔。

使用小部件

小部件基本上在views中使用,在視圖中可調(diào)用 yii\base\Widget::widget() 方法使用小部件。 該方法使用?配置?數(shù)組初始化小部件并返回小部件渲染后的結(jié)果。 例如如下代碼插入一個(gè)日期選擇器小部件,它配置為使用俄羅斯語(yǔ),輸入框內(nèi)容為$modelfrom_date屬性值。

<?phpuse yii\jui\DatePicker;
?><?= DatePicker::widget([
    'model' => $model,
    'attribute' => 'from_date',
    'language' => 'ru',
    'clientOptions' => [
        'dateFormat' => 'yy-mm-dd',
    ],
]) ?>

一些小部件可在yii\base\Widget::begin() 和 yii\base\Widget::end() 調(diào)用中使用數(shù)據(jù)內(nèi)容。Some widgets can take a block of content which should be enclosed between the invocation of 例如如下代碼使用yii\widgets\ActiveForm小部件生成一個(gè)登錄表單, 小部件會(huì)在begin()?和0?end()執(zhí)行處分別生成<form>的開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽,中間的任何代碼也會(huì)被渲染。

<?phpuse yii\widgets\ActiveForm;
use yii\helpers\Html;
?>

<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

    <?= $form->field($model, 'username') ?>

    <?= $form->field($model, 'password')->passwordInput() ?>

    <div class="form-group">
        <?= Html::submitButton('Login') ?>
    </div>

<?php ActiveForm::end(); ?>

注意和調(diào)用 yii\base\Widget::widget() 返回渲染結(jié)果不同, 調(diào)用 yii\base\Widget::begin() 方法返回一個(gè)可組建小部件內(nèi)容的小部件實(shí)例。

創(chuàng)建小部件

Creating Widgets

繼承 yii\base\Widget 類并覆蓋 yii\base\Widget::init() 和/或 yii\base\Widget::run() 方法可創(chuàng)建小部件。通常init()?方法處理小部件屬性,?run()?方法包含小部件生成渲染結(jié)果的代碼。 渲染結(jié)果可在run()方法中直接"echoed"輸出或以字符串返回。

如下代碼中HelloWidget編碼并顯示賦給message?屬性的值, 如果屬性沒(méi)有被賦值,默認(rèn)會(huì)顯示"Hello World"。

namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;

class HelloWidget extends Widget{
    public $message;

    public function init()
    {
        parent::init();
        if ($this->message === null) {
            $this->message = 'Hello World';
        }
    }

    public function run()
    {
        return Html::encode($this->message);
    }
}

使用這個(gè)小部件只需在視圖中簡(jiǎn)單使用如下代碼:

<?phpuse app\components\HelloWidget;
?><?= HelloWidget::widget(['message' => 'Good morning']) ?>

以下是另一種可在begin()?和?end()調(diào)用中使用的HelloWidget,HTML編碼內(nèi)容然后顯示。

namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;

class HelloWidget extends Widget{
    public function init()
    {
        parent::init();
        ob_start();
    }

    public function run()
    {
        $content = ob_get_clean();
        return Html::encode($content);
    }
}

如上所示,PHP輸出緩沖在init()啟動(dòng),所有在init()?和?run()方法之間的輸出內(nèi)容都會(huì)被獲取,并在run()處理和返回。

補(bǔ)充: 當(dāng)你調(diào)用 yii\base\Widget::begin() 時(shí)會(huì)創(chuàng)建一個(gè)新的小部件實(shí)例并在構(gòu)造結(jié)束時(shí)調(diào)用init()方法, 在end()時(shí)會(huì)調(diào)用run()方法并輸出返回結(jié)果。

如下代碼顯示如何使用這種?HelloWidget:

<?phpuse app\components\HelloWidget;
?><?php HelloWidget::begin(); ?>

    content that may contain <tag>'s

<?php HelloWidget::end(); ?>

有時(shí)小部件需要渲染很多內(nèi)容,一種更好的辦法是將內(nèi)容放入一個(gè)視圖文件, 然后調(diào)用yii\base\Widget::render()方法渲染該視圖文件,例如:

public function run(){
    return $this->render('hello');
}

小部件的視圖文件默認(rèn)存儲(chǔ)在WidgetPath/views目錄,WidgetPath代表小部件類文件所在的目錄。 假如上述示例小部件類文件在@app/components下,會(huì)渲染@app/components/views/hello.php視圖文件。 You may override 可以覆蓋yii\base\Widget::getViewPath()方法自定義視圖文件所在路徑。

最佳實(shí)踐

小部件是面向?qū)ο蠓绞絹?lái)重用視圖代碼。

創(chuàng)建小部件時(shí)仍需要遵循MVC模式,通常邏輯代碼在小部件類,展示內(nèi)容在視圖中。

小部件設(shè)計(jì)時(shí)應(yīng)是獨(dú)立的,也就是說(shuō)使用一個(gè)小部件時(shí)候,可以直接丟棄它而不需要額外的處理。 但是當(dāng)小部件需要外部資源如CSS, JavaScript, 圖片等會(huì)比較棘手, 幸運(yùn)的時(shí)候Yii提供?資源包?來(lái)解決這個(gè)問(wèn)題。

當(dāng)一個(gè)小部件只包含視圖代碼,它和視圖很相似, 實(shí)際上,在這種情況下,唯一的區(qū)別是小部件是可以重用類,視圖只是應(yīng)用中使用的普通PHP腳本。
?? ??: ?? ??: