laravel5.4的同学如果有问题可以看看这里,能不能解决你的问题
php artisan migrate
如果出现下面的错误,将 app/Providers/AppServiceProvider.php
里的boot方法加上 Schema::defauleStringLength(120)
, 这里(官方文档)[1]写的191对我没效果,如果你有效就先用把
Specified key was too long error
新建测试数据
php artisan tinker
factory('App\User')->create() // 新建一个用户
factory('App\Post')->create() // 这条创建文章可以多执行几次
exit // 退出
新建模型
public function owns($post) {
return $this->id == $post->user_id;
}
AuthServiceProvider.php
在 boot() 方法写入
$this->registerPolicies();
Gate::define('show-post',function($user,$post){
return $user->owns($post);
});
新建控制器
php artisan make:controller PostController -r // 出现教主出现的效果
在 show() 方法里写
$post = Post::findOrFail($id);
Auth::loginUsingId(1);
return view('post.show', ['post' => $post]);
post目录下的视图文件show.blade.php
<h1>{ $post->title }</h1>
@can('show-post', $post)
<a href="#">编辑文章</a>
@endcan
视图里写这些足够了
验证用户权限,就在控制器里的 Auth::loginUsingId(1)
修改值
当然如果还有错误的话,那应该是你没有用PHPstom的问题,引入类