Inspirer

laravel 学习笔记——视图

视图,你所看见的部分。

很多人下意识的将视图和模板引擎挂钩,这是一种非常不正确的想法。我们称用于实际负责输出(可视)数据的就叫做视图。

因此,视图不是模板引擎。

<?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');