【问题标题】:Working with routes and Entrust in Laravel 5.2在 Laravel 5.2 中使用路由和委托
【发布时间】:2017-11-22 18:42:19
【问题描述】:

我正在尝试在 Laravel 5.2 上运行的应用程序中使用 Entrust ACL。我已经按照 Entrust 的 GitHub 页面上的说明安装了该软件包,一切顺利。

我已经在我的 routes.php 中添加了这个路由组

Route::group(['namespace' => 'Backend', 'prefix' => 'admin', 'middleware' => ['auth']], function () {

    Route::get('roles',['as'=>'roles','uses'=>'RoleController@index','middleware' => ['permission:role-list|role-create|role-edit|role-delete']])->name('admin.roles');
    Route::get('roles/create',['as'=>'roles.create','uses'=>'RoleController@create','middleware' => ['permission:role-create']])->name('admin.roles.create');
    Route::post('roles/create',['as'=>'roles.store','uses'=>'RoleController@store','middleware' => ['permission:role-create']])->name('admin.roles.create');
});

这是我的角色控制器

class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $roles = Role::orderBy('id','DESC')->paginate(5);
        return view('backend.roles.index',compact('roles'))->with('i', ($request->input('page', 1) - 1) * 5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $permission = Permission::get();
        return view('backend.roles.create',compact('permission'));
    }
}

查看文件位于resources/views/backend/roles/。我认为路线有问题,但不明白是什么。

当我尝试打开 http://localhost/admin/roles 时,我遇到了这个错误:

Application.php 第 905 行中的 HttpException:

在 Application.php 第 905 行

在 Application->abort('403', '', array()) 在 helpers.php 第 30 行 在 EntrustPermission.php 第 39 行中的 abort('403') 处

在 EntrustPermission->handle(object(Request), object(Closure), 'role-list|role-create|role-edit|role-delete')

在 call_user_func_array(array(object(EntrustPermission), 'handle'), array(object(Request), object(Closure), 'role-list|role-create|role-edit|role-delete')) Pipeline.php 第 136 行

知道我在这里做错了什么吗?

现在我的视图中有Route [roles.create] not defined.

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

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    你必须先附加role_id和user_id,中间件应该像

      'middleware' => ['auth','admin']
    

    【讨论】:

    • 如果我将中间件更改为我现有的角色 role:superadmin 我有 Missing argument 3 for Zizaco\Entrust\Middleware\EntrustRole::handle() 错误
    • 'role' => 'Zizaco\Entrust\Middleware\EntrustRole', 'permission' => 'Zizaco\Entrust\Middleware\EntrustPermission', 'ability' => 'Zizaco\Entrust\Middleware\ EntrustAbility',在 kernal.php 中添加以上行来路由 routeMiddleware
    • 我在安装包时添加了它们
    • 这次我用视图中的错误更新了我的问题。路由和控制器也在上面
    • 您的 route.php 中没有名为 roles.create 的路由
    猜你喜欢
    • 2016-10-02
    • 2017-01-31
    • 1970-01-01
    • 2016-08-30
    • 2016-12-01
    • 2016-06-24
    • 1970-01-01
    • 2016-12-18
    • 2017-07-19
    相关资源
    最近更新 更多