【发布时间】:2017-12-13 07:58:10
【问题描述】:
我定义了PostPolicy.php 来处理谁可以访问操作。
我正在尝试处理 PUT 请求以更新帖子,但它似乎无法正常工作。
namespace App\Policies;
use App\Models\Users;
use App\Models\Posts;
use Illuminate\Auth\Access\HandlesAuthorization;
class PostPolicy
{
use HandlesAuthorization;
public function view(Users $user, Posts $posts)
{
return true;
}
public function create(Users $user)
{
return true;
}
public function update(Users $user, Posts $posts)
{
return true; //$user->id === $posts->user_id;
}
public function delete(Users $user, Posts $posts)
{
return $user->id === $posts->user_id;
}
}
我在AuthServiceProvider.php注册了这个政策
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
App\Models\Posts::class => App\Policies\PostPolicy::class,
];
我的路线:
Route::put('post/update/{id}', 'CMS\PostController@update');
最后,这是我的控制器
namespace App\Http\Controllers\CMS;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use App\Models\Posts as PostModel;
use LRedis;
use Illuminate\Http\Request;
class PostController extends BaseController
{
public function __construct()
{
}
public function update (Request $request, PostModel $postModel) {
$this->authorize('update', $postModel);
}
public function subcribe () {
}
}
当我提交表单时,我收到错误Method [authorize] does not exist on [App\Http\Controllers\CMS\PostController].
我正在让我的演示关注documentation。
我的错误是什么?我是否遗漏了任何正在进行的内容?
【问题讨论】:
-
是的,你遗漏了一些东西......你的控制器没有这些方法......看看你应该在你的应用程序中扩展的控制器
App\Http\Controllers\Controller......只是在文件的顶部,它本身不会做任何事情