視圖,你所看見的部分。
很多人下意識的將視圖和模板引擎掛鉤,這是一種非常不正確的想法。我們稱用於實際負責輸出(可視)數據的就叫做視圖。
因此,視圖不是模板引擎。
- <?php
- echo 'Hello, world';
上面的這段代碼,我們可以稱之爲視圖,因爲這段代碼輸出了對於客戶端可視的內容。
理解了這一點,我們就可以愉快的去了解 laravel 的視圖。對於框架而言,視圖是作爲框架的組成部分之一,框架中的視圖,其職責更爲單一,不再負責數據的讀寫、處理,而僅僅負責呈現。這樣一個職責獨立的視圖,就需要外部提供數據,也需要外部的調度。而 laravel 的 View 類則正是負責這一工作的。
建議讀者先去閱讀本人的另一篇文章: 用 php 實現一個視圖組件和模板引擎——基礎https://www.insp.top/use-php-to-achieve-view-component-and-template-engine
開始
Laravel 的視圖是一個獨立的組件,並不和 Controller 耦合,可以在任意位置使用 view()
來獲取一個視圖。
view()
函數實際上是 View
類的快速訪問方式,可以在該函數的定義中看得到(在文件vendor/laravel/framework/src/illuminate/foundation/helpers.php
中可以查看)。
View
組件在 vendor/laravel/framework/src/illuminate/View/View.php
中定義。
我們一般爲了方便,直接使用 view()
函數
使用
大多數使用方法在文檔中已經有了十分詳細的描述,常見的問題主要在傳遞數據上面。
在下面例子中,任何一種方式都會傳遞兩個變量($content
,$author
)到視圖文件article
中。
- // 通過函數創建一個視圖
- view('article', ['content' => 'Hello, world', 'author' => 'chongyi']);
- view('article')->with('title', 'Hello, world')->with('author', 'chongyi');
- view('article')->withTitle('Hello, world')->withAuthor('chongyi');
- // 通過 Laravel 的 View Facade 創建一個視圖
- use View;
- View::make('article', ['content' => 'Hello, world', 'author' => 'chongyi']);
- View::make('article')->with('title', 'Hello, world')->with('author', 'chongyi');
- View::make('article')->withTitle('Hello, world')->withAuthor('chongyi');