视图

未匹配的标注
本文档最新版为 6.x,旧版本可能放弃维护,推荐阅读最新版!

视图

基本用法

视图包含你应用程序所用到的 HTML,它能够将控制器和应用程序逻辑在呈现逻辑中进行分离。视图被存在 resources/views 目录下。

一个简单的视图看起来可能像这样:

<!-- 视图被保存在 resources/views/greeting.php -->

<html>
    <body>
        <h1>Hello, <?php echo $name; ?></h1>
    </body>
</html>

因为这个视图被保存在 resources/views/greeting.php,所以我们可以像这样使用全局的辅助函数 view 来返回:

$app->get('/', function ()  {
    return view('greeting', ['name' => 'James']);
});

如你所见,view 辅助函数的第一个参数会对应到 resources/views 目录内视图文件的名称;传递到 view 辅助函数的第二个参数是一个能够在视图内取用的数据数组。在这个例子中,我们传递了 name 这个变量,然后在视图里面用简单的 echo 来显示这个变量。

当然,视图文件也可以被存放在 resources/views 的子目录内。. (小数点)的表示法可以被用来表示在子目录内的视图文件。举例来说,如果你的视图文件保存在 resources/views/admin/profile.php,你可以用以下的代码来返回:

return view('admin.profile', $data);

判断视图文件是否存在

如果你需要判断视图文件是否存在,则可以在一个不传参的 view 辅助函数之后调用 exists 方法来进行判断。这个方法将会在视图文件存在时返回 true

if (view()->exists('emails.customer')) {
    //
}

view 辅助函数进行不传参调用时,将会返回一个 Illuminate\Contracts\View\Factory 的实例,以便你调用这个 Factory 的任意方法。

视图的数据

传递数据到视图

就像你在之前的例子看到的那样,你可以简单地传递一个数组的数据给视图:

return view('greetings', ['name' => 'Victoria']);

当你用上面这种方式传递数据时,$data 必须是一个键值对的数组。在视图中,你可以用相对应的键名取用值,如:<?php echo $key; ?>;你也可以用另一个替代语法来传递一个数据数组,在 view 辅助函数使用 with 来传递额外数据给视图:

$view = view('greeting')->with('name', 'Victoria');

把数据共享给所有视图

有时候你可能需要共享一些数据给应用程序的所有渲染视图,这时可以通过使用视图 factory 的 share 方法来完成。通常情况下,你会把这些调用 share 方法的代码放在一个服务提供者的 boot 方法内。你可以选择直接写在 AppServiceProvider 或是自己生成一个不同的服务提供者来放置这些代码:

<?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 启动任何应用程序的服务。
     *
     * @return void
     */
    public function boot()
    {
        view()->share('key', 'value');
    }

    /**
     * 注册服务提供者。
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~