将数据传递给所有视图并在路由中使用它们

时间:2016-06-19 01:00:14

标签: laravel laravel-5 laravel-5.2

我已按照此文档将数据传递给我的所有观点:

https://laravel.com/docs/5.2/views#sharing-data-with-all-views

但是,它不允许我访问路线文件中的变量。

如何将变量传递给我的所有视图,并且能够在我的所有路径的路径文件中使用它?

2 个答案:

答案 0 :(得分:1)

您需要考虑您的流程。将某个数据传递给所有视图的目的是因为该值与视图相关,而不是路径或控制器操作。例如,页面标题或向用户显示页面底部的当前日期。

要执行您想要的操作,请查看Illuminate\View\View的API文档,您将看到函数 offsetGet offsetSet

以下是一个例子:

应用/提供者/ AppServiceProvider.php

<?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        view()->share('title', 'Qevo');
    }

    public function register()
    {
        //
    }
}

<强>资源/视图/ example.blade.php

<h1>{{ $title }}</h1>

应用/ HTTP / routes.php文件

Route::get('/test', function () {
    // view has to be created for shared data to be set
    $v = view('example');

    // get the value of the shared data
    $page_title = $v->offsetGet('title');

    // set a new value
    $v->offsetSet('title', $page_title . ' helps');

    return $v;
});

答案 1 :(得分:0)

我认为您应该使用Session(或缓存数据)

我认为使用会话是最好的方式

假设您要将一些数据添加到当前用户会话

Session::put('key', 'value');

现在您可以在视图中访问此内容

Session::get('key');

并在您的控制器/路线文件

$value = Session::get('key');

这样,数据在控制器,路由文件和视图中可用