Php 使变量可以从Laravel应用程序中的任何位置访问
我向API发出一个cURL请求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); //
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');