视图,你所看见的部分。
很多人下意识的将视图和模板引擎挂钩,这是一种非常不正确的想法。我们称用于实际负责输出(可视)数据的就叫做视图。
因此,视图不是模板引擎。
- <?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');