# 视图

视图其实就是 HTML,它使用的是 Laravel 的 Blade 模板引擎,从 Blessing Skin v5 起开始使用 Twig。

关于视图更详细的用法,请参考 Laravel 文档中 视图 (opens new window) 一节。

关于 Blade 模板更详细的用法,请参考 Laravel 文档中 Blade 模板 (opens new window) 一节。

# 添加视图文件

所有的视图文件都放在插件目录下的 views 目录下。若视图文件的后缀名是 .blade.php,则使用 Blade 作为模板引擎;若后缀名是 .twig,则使用 Twig 作为模板引擎。

# 使用视图

如果您希望返回一个视图,您可以在控制器中使用全局的辅助函数 view

public function showLoginPage()
{
    return view('Author\MyPlugin::hello.world');
}

注意必须要指定命名空间。

您可能注意到上面的例子中指定视图文件时使用了小数点.,这表示该视图文件位于插件目录下 views/hello 目录中的 world.blade.php。也就是说,使用小数点.来进行目录层级定位。

# 传递数据

视图不仅仅是显示您已经写好的 HTML 那么简单,您可以从插件传递一些数据到前端页面。

return view('Author\MyPlugin::hello.world')->with('key', $value);

当您需要传递较多的数据时,使用多个 with 方法是不优雅的,因此您传递一个关联数组给 view 函数:

return view('Author\MyPlugin::hello.world', ['name' => 'Secret', 'phone' => 2333]);

如何使用这些数据?请继续阅读。

# 模板继承

为了让您的插件的页面能与皮肤站的界面保持基本一致的风格,您应该使用模板继承。

对于一个插件而言,如果希望使用皮肤站现有的风格,您的视图文件应该是这样的(以 Twig 为例):

{% extends '要继承的母页面' %}

{% block title %}页面标题{% endblock %}

{% block content %}
  <!-- 页面内容 -->
{% endblock %}

可以被继承的模板一般为 user.baseadmin.master,分别表示用户中心的基本页面和管理面板的基本页面,当然您可以自己定义另外一个视图后继承它 (别忘了要注意命名空间!)