美文网首页
74. 视图

74. 视图

作者: 独步天堂 | 来源:发表于2017-10-21 00:42 被阅读0次

    创建视图

    视图包含应用程序的 HTML,并且将控制器/应用程序逻辑与演示逻辑分开。视图文件存放于 resources/views 目录下。一个简单的视图如下所示:

    <!-- 此视图文件位置:resources/views/greeting.blade.php -->
    
    <html>
        <body>
            <h1>Hello, {{ $name }}</h1>
        </body>
    </html>
    

    使用全局辅助函数 view 来返回:

    Route::get('/', function () {
        return view('greeting', ['name' => 'James']);
    });
    

    view 函数中,传入的第一个参数对应着 resources/views
    目录中视图文件的名称,第二个参数是可在视图文件中使用的数据数组。在示例中,我们传递 name 变量,该变量可以使用 Blade 模板语言 在视图中显示。

    视图文件也可以嵌套在 resources/views 目录的子目录中。「点」符号可以用来引用嵌套视图。例如,如果你的视图存储在 resources/views/admin/profile.blade.php,则可以这样引用它:

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

    判断视图文件是否存在

    use Illuminate\Support\Facades\View;
    
    if (View::exists('emails.customer')) {
        //
    }
    

    向视图传递数据

    使用数组将数据传递到视图:

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

    第二个参数的数据必须是键值对数组。在视图文件中,你可以通过对应的键获取相应的值,例如

    <?php echo $key; ?>

    可以使用 with 方法将单个数据片段添加到视图:

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

    与所有视图共享数据

    如果需要共享一段数据给应用程序的所有视图,你可以在服务提供器的 boot 方法中调用视图 Facade 的 share 方法。例如,可以将它们添加到 AppServiceProvider 或者为它们生成一个单独的服务提供器:

    <?php
    
    namespace App\Providers;
    
    use Illuminate\Support\Facades\View;
    
    class AppServiceProvider extends ServiceProvider
    {
        /**
         * 引导任何应用服务。
         *
         * @return void
         */
        public function boot()
        {
            View::share('key', 'value');
        }
    
        /**
         * 注册服务提供器
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }
    

    视图合成器

    视图合成器是在渲染视图时调用的回调或者类方法。如果你每次渲染视图时都要绑定视图的数据,视图合成器可以帮你将这些逻辑整理到特定的位置。

    相关文章

      网友评论

          本文标题:74. 视图

          本文链接:https://www.haomeiwen.com/subject/xyvbuxtx.html