Php 使变量可以从Laravel应用程序中的任何位置访问

Php 使变量可以从Laravel应用程序中的任何位置访问,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,我向API发出一个cURL请求 http://site/user 我得到了回复 data: Object first_name: "Bob" last_name: "Jones" 我获取名字和姓氏,将它们连接在一起,并存储到变量调用$name $fn = VSE::user('first_name',$username); $ln = VSE::user('last_name',$username); $name = ucwords($fn.' '.$ln); //

我向API发出一个cURL请求

http://site/user


我得到了回复

    data: Object
    first_name: "Bob"
    last_name: "Jones"

我获取名字和姓氏,将它们连接在一起,并存储到变量调用
$name

$fn = VSE::user('first_name',$username);
$ln = VSE::user('last_name',$username);
$name = ucwords($fn.' '.$ln); // Bob Jones
我想在我的导航上显示此
$name

在每个视图中发送这个
$name
变量会有点过分。 我正在寻找一种更好的方法

我应该如何使该变量在我的应用程序路由/视图中可访问


限制:
我没有访问
Auth::user
对象的权限

尝试创建一个返回所需内容的静态方法。 例如,在所有你能做到的地方

Custom.getName();
请参阅此文档: 或

使用视图生成器在每个视图中提供所需的变量

视图生成器是回调或类方法,当 视图被渲染。如果您有要绑定到视图的数据 每次渲染该视图时,视图生成器都可以帮助您组织 将该逻辑转换为单个位置

如果不想使用视图生成器,只需在AppServiceProvider引导方法中添加对view()->share()方法的调用即可

public function boot()
{
    $fn = VSE::user('first_name',$username);
    $ln = VSE::user('last_name',$username);
    $name = ucwords($fn.' '.$ln); // Bob Jones

    view()->share('name', $name);
}

我不明白为什么你不能把名字放在laravel会话或缓存中

拉雷维尔会议 在会话中设置一个值:

Session::put('key', 'value');
正在从会话中检索项目:

$value = Session::get('key');
有关更多信息,请参阅

拉维缓存 正在设置缓存:

Cache::put('key', 'value', $minutes);
获取缓存值:

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

有关更多信息,请参阅

能否添加更多详细信息?我应该把它放在哪里-哪个文件?如何在我的视图中调用它?请参阅此文档。你把它放在更有意义的地方。或者本,根据你的第二个建议,我有个问题。在用户提交表单帖子之前,我不会使用access变量。它来自这里
$username=strtolower(输入::get('username')-我现在该怎么办?本,你知道吗?只是好奇(如果在提交post数据等特定事件期间发生,则应将其添加到处理请求的控制器中的会话中,然后使用上述答案将会话数据添加到视图中(如果存在)。您最好使用
view()->share('name',$name)在所有视图之间共享变量数据
。它提供了比使用视图编写器更好的性能,因为编写器会在每个匹配的视图渲染操作中触发与其关联的代码,这使得如果一个请求中有多个视图需要数据,则编写器效率低下。您可以在。
$value = Cache::get('key');