关于"服务注入",文档说:https://laravel.com/docs/5.2/blade#service-injection
服务注入
@inject指令可用于从Laravel服务容器中检索服务。传递给@inject的第一个参数是服务将放入的变量的名称,而第二个参数是要解析的服务的类/接口名称:
@inject('metrics', 'App'Services'MetricsService')
<div>
Monthly Revenue: {{ $metrics->monthlyRevenue() }}.
</div>
我的代码:
1、服务:
名称和角色.php
class NameAndRole
{
public function nameAndRole() {
$user = 'Auth::user();
$username= $user->name;
$role =$user->getRoles();
$slug=$role[0]['slug'];
return compact('username','slug');
}
}
2、查看:
侧边栏.刀片.php
@inject('nameAndRole','App'Services'NameAndRole')
<div>
<h4 >username:{{$username}}</h4>
<h4>slug:{{$slug}}</h4>
</div>
错误:
Undefined variable: username (View: D:'wnmp'www'laravel-book'resources'views'partials'sidebar.blade.php) (View: D:'wnmp'www'laravel-book'resources'views'partials'sidebar.blade.php)
我在 laracasts.com 上得到了答案,我认为这就是我想要的:
class NameAndRole
{
public $username;
public $slug;
public function __construct()
{
$user = 'Auth::user();
$this->username = $user->name;
$role = $user->getRoles();
$this->slug = $role[0]['slug'];
}
}
在"刀片"视图中:
@inject('details', 'App'Services'NameAndRole')
{{ $details->username }}
{{ $details->slug }}
你应该从方法中获取变量
@inject('nameAndRole','App'Services'NameAndRole')
<div>
<h4 >username:{{$nameAndRole->nameAndRole()['username']}}</h4>
<h4>slug:{{$nameAndRole->nameAndRole()['slug']}}}</h4>
</div>