Laravel盖茨和政策

时间:2017-09-21 07:25:06

标签: php laravel-5.4

以下Gate定义工作正常:

    Gate::define('create_role','App\Policies\RolePolicy@create_role');

    Gate::define('view_role','App\Policies\RolePolicy@view_role');

    Gate::define('edit_role','App\Policies\RolePolicy@edit_role');

    Gate::define('delete_role','App\Policies\RolePolicy@delete_role');

但是当我把它改成时,

    Gate::resource('roles', 'App\Policies\RolePolicy', [
        'create_role' => 'create_role',
        'view_role' => 'view_role',
        'edit_role' => 'edit_role',
        'delete_role' => 'delete_role',
    ]);

用于减少LOC和优化代码。它不起作用。

以下是我的刀片文件中的代码行,

                @can('create_role')
                <a href="{{route('create_role')}}">Add Role</a>
                @endcan


                @can('view_role')
                <a href="{{route('view_role')}}"> View Roles</a>                    
                @endcan

同样适用于编辑和删除。 观察到的行为是这样的,它只从策略方法中接收到错误。我甚至试过发送它只是真的,但没有任何区别。

1 个答案:

答案 0 :(得分:0)

你想创造额外的大门吗?鉴于您在数组中传递了额外的参数。 门定义后的数组用于创建额外的门定义。 欲了解更多信息,请查看文档, link。 使用资源丰富的政策时。

例如:

Gate::resource('roles', 'App\Policies\RolePolicy');

@can('roles.view')
// html here
@endcan

@can('roles.create')
//html here
@endcan