【问题标题】:Zizaco / entrust throws error with @permission in bladeZizaco / entrust 在刀片中使用@permission 引发错误
【发布时间】:2017-03-02 13:57:58
【问题描述】:

我正在使用包 Zizaco / entrust 进行基于角色的访问控制 (RBAC)。

用户角色使用@permission 在视图中检查,同样明智,

@permission('role-create')
    <a class="btn btn-success" href="{{ route('roles.create') }}"> Create New Role</a>
@endpermission

等于,

<?php if (\Entrust::can'role-create') : ?>
    <a class="btn btn-success" href="<?php echo route('roles.create'); ?>"> Create New Role</a>
<?php endif; // Entrust::can ?>

但它会抛出以下错误:

Parse error: syntax error, unexpected ''role-create'' (T_CONSTANT_ENCAPSED_STRING) (View: /var/www/rbac/resources/views/roles/index.blade.php)

【问题讨论】:

标签: php laravel rbac


【解决方案1】:

只需将您的权限名称上的小括号加倍即可解决我的问题

@permission(('role-create'))
    <a class="btn btn-success" href="{{ route('roles.create') }}"> Create New       Role</a>
@endpermission

【讨论】:

    【解决方案2】:

    这是包中的一个错误,但您可以在项目中修复它 去供应商目录那里找到一个委托目录然后从那里去 src/Entrusts/EntrustServiceProvider.php

    在那里你可以找到你的刀片指令代码,如下所示

    \Blade::directive('permission', function($expression) {
        return "<?php if (\\Entrust::can({$expression}) : ?>";
     });
    

    你看到一个起始括号丢失了,可以像下面这样简单地添加起始括号

    \Blade::directive('permission', function($expression) {
         return "<?php if (\\Entrust::can({$expression})) : ?>";
     });
    

    或与两个括号一起使用。像这样: @permission(('role-edit')) @endpermission

    更多信息请查看以下链接

    https://github.com/Zizaco/entrust/issues/657

    注意:在之前的 Laravel 版本中,当使用指令方法注册自定义 Blade 指令时,传递给指令回调的 $expression 包含最外层的括号。在 Laravel 5.3 中,这些最外面的括号不包含在传递给指令回调的表达式中。请务必查看 Blade 扩展文档并验证您的自定义 Blade 指令是否仍然正常工作。

    【讨论】:

    • 转储作曲家然后检查作曲家转储自动加载
    • Parse error: syntax error, unexpected ':' (View: /var/www/rbac/resources/views/roles/index.blade.php)
    • 该文件中有多个损坏的东西。你需要经历并修复它们。将github.com/Zizaco/entrust/pull/667/commits/…的文件内容复制到刚刚修改的EntrustServiceProvider.php文件中。
    • 就像 user3158900 提到从该链接复制代码并将其替换为您的文件然后检查它
    • 更新了我的答案现在检查它以前缺少一个端括号现在我补充说请现在检查它然后让我知道
    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 2019-10-14
    • 2017-02-05
    • 2018-02-12
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多