【问题标题】:Entrust Facade @role not working on Laravel 5.1Entrust Facade @role 不适用于 Laravel 5.1
【发布时间】:2015-11-11 15:19:12
【问题描述】:

我用 laravel 5.1 安装了 Zizaco/entrust (https://github.com/Zizaco/entrust) 并将它们添加到 provideraliases 数组中

'providers' => [
....
Zizaco\Entrust\EntrustServiceProvider::class,
]
'aliases' => [
....
'Entrust'   => Zizaco\Entrust\EntrustFacade::class,
]

我可以从控制器访问所有 Entrust 功能,例如:$user->hasRole('admin') 没有问题,但是当我在我的视图中尝试这个时它不起作用

@role('admin')
....
@endrole

它只是将@role('admin') @endrole 显示为html。所以我尝试了

@if(\Entrust::role('admin'))
...
@endif

我得到了

Call to undefined method Zizaco\Entrust\Entrust::role()

我是否必须执行任何其他配置或更改才能使@role 正常工作?还是我错过了什么?

提前致谢

【问题讨论】:

  • 只是为了确定一下,你有没有 composer dump-autoload
  • 是的,我做了一个composer dump-autoload
  • @role 是刀片模板引擎的功能吗? ->role()::role()Entrust 的函数吗?据我所知,Entrust 门面正在工作,你只是使用不当......
  • 我认为@role应该是Entrust的一个功能。它在文档中说“三个指令可在您的 Blade 模板中使用。” @role @permission@ability

标签: php laravel laravel-5 laravel-5.1


【解决方案1】:

我无法让 @roles('admin') 工作,但这可以工作

@if(Entrust::hasRole('admin'))
....
@endif

【讨论】:

    【解决方案2】:

    它适用于 Laravel 5.1.31 LTS

    1. 因此,只需将 Vendors/Zizaco/entrust/src/Entrust/EntrustServiceProvider.php 中的文件替换为以下文件:https://github.com/Zizaco/entrust/blob/master/src/Entrust/EntrustServiceProvider.php
    2. 之后你可以做 php artisan view:clear
    3. 然后你可以看到错误 Call to undefined method Zizaco\Entrust\Entrust::ability()
    4. 很容易解决的 Entrust::ability 错误,您可以将文件 Vendors/Zizaco/entrust/src/Entrust/Entrust.php 替换为 https://raw.githubusercontent.com/Zizaco/entrust/master/src/Entrust/Entrust.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2016-07-28
      • 2015-11-02
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多