我的项目中有一个管理仪表板,该仪表板可以显示我想要显示的所有数据(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');
每当我删除管理路由时,所有变量似乎都可以正常工作。每当用户不是管理员时,我也将通过此代码实现我想要的功能。仅当管理员访问管理仪表板时才会发生该错误。
答案 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';
}