添加登机路线后在视图中获取未定义的变量

时间:2019-08-21 09:59:15

标签: laravel

我的项目中有一个管理仪表板,该仪表板可以显示我想要显示的所有数据(Users, books, reviews, comments),但是当我尝试添加限制用户以限制没有isAdmin的用户时值设置为1,整个视图崩溃,并且所有变量都未定义。

这是我正在使用的控制器

<?php

namespace App\Http\Controllers;
use App\User;
use App\Book;
use App\Review;
use App\Comment;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;


class AdminsController extends Controller
{
    public function admin()
    {
        if (Gate::allows('admins', auth()->user())) {
            return view('admin.dashboard');
        }
        return 'Unauthorized entry';
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public function index()
    {   
        $users = User::all();
        $books = Book::all();
        $reviews = Review::all();
        $comments = Comment::all();


        return view('admin.dashboard', compact('users' ,'books', 'reviews', 'comments'));


    }

使用的门是在AuthServiceProvider中定义的,看起来像这样

Gate::define('admins', function ($user) {
      if($user->isAdmin == 1)
      {
        return true;
      }
        return false;
});  

这是该视图的两条路线

// Admin
Route::resource('admin', 'AdminsController');
Route::get('/admin', 'AdminsController@admin')->name('admin');

每当我删除管理路由时,所有变量似乎都可以正常工作。每当用户不是管理员时,我也将通过此代码实现我想要的功能。仅当管理员访问管理仪表板时才会发生该错误。

1 个答案:

答案 0 :(得分:1)

您不会在admin()方法中将数据与视图一起传递。

更新:

public function admin()
    {
        if (Gate::allows('admins', auth()->user())) {
            return view('admin.dashboard');
        }
        return 'Unauthorized entry';
    }

收件人:

public function admin()
    {
        if (Gate::allows('admins', auth()->user())) {
            return view('admin.dashboard', compact('users' ,'books', 'reviews', 'comments'));
        }
        return 'Unauthorized entry';
    }