YII2 隨筆 視圖最佳實踐

  • yii\base\Controller::render(): 渲染一個 視圖名 并使用一個 布局 返回到渲染結果。
  • yii\base\Controller::renderPartial(): 渲染一個 視圖名 并且不使用布局。
  • yii\web\Controller::renderAjax(): 渲染一個 視圖名 并且不使用布局, 并注入所有注冊的JS/CSS腳本和文件,通常使用在響應AJAX網頁請求的情況下。
  • yii\base\Controller::renderFile(): 渲染一個視圖文件目錄或 別名下的視圖文件。
  • yii\base\Controller::renderContent(): renders a static string by embedding it into the currently applicable layout. This method is available since version 2.0.1.

例如:namespace app\controllers; use Yii; use app\models\Post; use yii\web\Controller; use yii\web\NotFoundHttpException; class PostController extends Controller { public function actionView($id) { $model = Post::findOne($id); if ($model === null) { throw new NotFoundHttpException; } // 渲染一個名稱為"view"的視圖并使用布局 return $this->render('view', [ 'model' => $model, ]); } }

嵌套布局

有時候你想嵌套一個布局到另一個,例如,在Web站點不同地方,想使用不同的布局, 同時這些布局共享相同的生成全局HTML5頁面結構的基本布局,可以在子布局中調用 yii\base\View::beginContent() 和yii\base\View::endContent() 方法,如下所示:

<?php $this->beginContent('@app/views/layouts/base.php'); ?>...child layout content here...<?php $this->endContent(); ?>

調用 yii\base\View::beginBlock() 和 yii\base\View::endBlock() 來定義數據塊, 使用 $view->blocks[$blockID] 訪問該數據塊, 其中 $blockID 為定義數據塊時指定的唯一標識ID。

如下實例顯示如何在內容視圖中使用數據塊讓布局使用。

首先,在內容視圖中定一個或多個數據塊:

...<?php $this->beginBlock('block1'); ?>...content of block1...<?php $this->endBlock(); ?> ... <?php $this->beginBlock('block3'); ?> ...content of block3... <?php $this->endBlock(); ?>


???? 最佳實踐

視圖負責將模型的數據展示用戶想要的格式,總之,視圖

  • 應主要包含展示代碼,如HTML, 和簡單的PHP代碼來控制、格式化和渲染數據;
  • 不應包含執行數據查詢代碼,這種代碼放在模型中;
  • 應避免直接訪問請求數據,如 $_GET, $_POST,這種應在控制器中執行, 如果需要請求數據,應由控制器推送到視圖。
  • 可讀取模型屬性,但不應修改它們。

為使模型更易于維護,避免創建太復雜或包含太多冗余代碼的視圖, 可遵循以下方法達到這個目標:

  • 使用 布局 來展示公共代碼(如,頁面頭部、尾部);
  • 將復雜的視圖分成幾個小視圖, 可使用上面描述的渲染方法將這些小視圖渲染并組裝成大視圖;
  • 創建并使用 小部件 作為視圖的數據塊;
  • 創建并使用助手類在視圖中轉換和格式化數據。

轉載于:https://www.cnblogs.com/chuanqideya/p/6119188.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270408.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡技巧:無線路由器越用越慢的解決方法

目錄 01 ???????路由器越用越慢很平常 02 國區設置不要亂用 03 很容易被遺忘的IPv6設置 04 學會自我檢查掉線問題 05 番外篇&#xff1a;測試自己的網速 “耳機、音箱通過一定時間的煲機&#xff0c;表現效果會變好&#xff0c;可為何家里WiFi網絡卻老是給人越用越慢、越…

Mac軟件:15個提升辦公效率的軟件

目錄 1.解壓軟件&#xff1a;RAR Extractor - The Unarchiver Pro 2.實用清理軟件&#xff1a;CleanMyMac X 3.水族屏保軟件:Desktop Aquarium Wallpaper?s 4.桌面圖標隱藏工具&#xff1a;Desktop Curtain 5.剪貼板工具&#xff1a;Paste 6.快捷鍵查看軟件&#xff1a;Cheats…

樂觀鎖介紹

1.樂觀鎖介紹 樂觀鎖&#xff08; Optimistic Locking &#xff09; 相對悲觀鎖而言&#xff0c;樂觀鎖假設認為數據一般情況下不會造成沖突&#xff0c;所以在數據進行提交更新的時候&#xff0c;才會正式對數據的沖突與否進行檢測&#xff0c;如果發現沖突了&#xff0c;則讓…

從0開始學習 GitHub 系列之「03.Git 速成」

前面的 GitHub 系列文章介紹過&#xff0c;GitHub 是基于 Git 的&#xff0c;所以也就意味著 Git 是基礎&#xff0c;如果你不會 Git &#xff0c;那么接下來你完全繼續不下去&#xff0c;所以今天的教程就來說說 Git &#xff0c;當然關于 Git 的知識單憑一篇文章肯定說不完的…

linux看缺省的編譯器,修改Linux系統默認編輯器

pip和requests模塊的安裝1.配置python的環境變量 在path中加入pyhton的環境變量,如我的是E:\Python27 2. 如果沒有pip,一個幫助軟件管理的東東(現在的版本一般有,若有跳到3) 去https:// ...sp&lowbar;who&lowbar;lockUSE MyDataBase GO /****** Object: StoredProcedur…

Spring系列(一):Spring相關知識介紹筆記

目錄 1、Srping概念 2、Spring原理 2.1 控制反轉(Inversion of control)&#xff08;IOC&#xff09; 2.2 面向切面編程(Aspect-Oriented Programming)&#xff08;AOP&#xff09; 3、Spring框架結構 4、Srping生命周期 4、Srping有什么優勢&#xff1f; 4.1、非侵入式設計 4.…

SDUT 3400 數據結構實驗之排序三:bucket sort

數據結構實驗之排序三&#xff1a;bucket sort Time Limit: 150MS Memory Limit: 65536KBSubmit StatisticProblem Description 根據人口普查結果&#xff0c;知道目前淄博市大約500萬人口&#xff0c;你的任務是幫助人口普查辦公室按年齡遞增的順序輸出每個年齡有多少人&#…

nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException(Spring循環依賴問題)

1:問題 最近啟動項目時候&#xff0c;遇到如下報錯 nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name stockReceiptManager: Bean with name stockReceiptManager has been injected the bean. Thi…

linux分區設置大小,Linux調整磁盤分區大小

Resize the disk (Linux調整磁盤分區大小)Resize the partition. Run parted: $ partedShow the partition list: (parted) printThere should be two partitions; 1 should be a boot partition, about 64MB; the second should be the main partition, about 3.6GSome Disk C…

電腦技巧:盤點常用的Win組合快捷鍵

今天給大家繼續分享電腦使用技巧&#xff0c;給大家介紹一下有哪些常用Win組合快捷鍵&#xff0c;希望可以對大家的日常辦公提高幫助&#xff01; 1、WinE&#xff1a;打開我的電腦 超級實用的一個組合鍵&#xff0c;不論你當前在操作什么&#xff0c;只要按下這個組合鍵&#…

簡單正則替換

var reganew RegExp(" ","g"); //創建正則RegExp對象 ntrstrntrstr.replace(rega,""); var regbnew RegExp(" ","g"); //創建正則RegExp對象 ntrstrntrstr.replace(regb,""); var regcnew Reg…

電腦技巧:電腦安裝操作系統、重裝系統常見的問題解決方法

目錄 1、提示權限不足 2、添加PE開機引導菜單失敗 3、磁盤格式錯誤 4、除系統盤外&#xff0c;未找到任何其他非系統磁盤分區 5、計算機意外地重新啟動或遇到錯誤 6、windows無法完成安裝 7、U盤安裝系統時出現如下圖錯誤 8、下載速度慢、卡住 重裝系統現在也不是什么難事&…

linux開發板上程序如何調試,linux開發板調試典型方法

tftpdsudo apt-get install tftpd openbsd-inetd將/etc/inetd.conf中的最后一個路徑設置成你希望讓客戶端存取文件的目錄例如下面的“/tftpboot”(記得開放該目錄的讀寫權限)&#xff1a;“tftp dgram udp wait nobody /usr/sbin/t…

電腦技巧:Win10電腦卡頓解決小技巧,非常實用

目錄 1、及時關閉不常用的后臺進程 2、建議打開GPU硬件加速功能 3、及時更新升級硬件驅動 4、適當降低Windows動畫特效 5、開啟Windows自帶的游戲模式 電腦用的時間越久就會越卡頓了&#xff0c;今天小編給大家分享五個小技巧&#xff0c;來解決電腦卡頓的問題&#xff0c;有需…

線程其實就是一個個指令組成的,當這個線程內的指令全部執行完了,那么這個線程也就執行結束了

線程其實就是一個個指令組成的&#xff0c;當這個線程內的指令全部執行完了&#xff0c;那么這個線程也就執行結束了

page,client,offset區別

offset:相對于當前“盒子”的距離 &#xff0c;與滾動條無關 client:相對于可視區域的距離&#xff0c;與滾動條無關 page:相對于整個頁面的距離&#xff0c;與滾動條有關 示例代碼&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 …

linux netbeans 中文亂碼,淺談Linux Netbeans字體反鋸齒處理

用的Linux發行版是Ubuntu8.04&#xff0c;如果使用源里面的JDK一切都很簡單(現在源里的版本是1.6u6)&#xff0c;JDK6開始支持反鋸齒。裝完Netbeans你就會驚喜的發現&#xff0c;仿原生GUI的界面(GTK&#xff0b;)上的文字是反鋸齒的&#xff0c;但是編輯器里面的文字是鋸齒的&…

Win10軟件:推薦兩款Windows操作系統下的遠程軟件,值得收藏!

遠程控制軟件是程序員日常必備的工具&#xff0c;現場市面上有微軟自帶的遠程連接工具、向日葵、teamviewer等遠程控制軟件。他們都有一個共同的缺點&#xff0c;無法針對遠程連接設置分組、別名。大多數情況下&#xff0c;我們可能需要連接十幾個甚至幾十個Windows遠程服務器。…

開發機多用戶 xdebug 遠程調試 PhpStorm

在公司都用的遠程開發機開發&#xff0c;每次有錯誤調試就得dd(xxx)然后保存真是&#xff0c;讓我在本地開發用慣xdebug的情何以堪&#xff0c;所以有了下文。 1.安裝配置xdebug 直接使用pecl安裝即可# pecl install xdebug 然后寫xdebug配置&#xff0c;下面是我的設置(具體擴…