アクションにアクセスできるユーザーを処理するためにPostPolicy.php
を定義しました。
投稿を更新するPUTリクエストを処理しようとしていますが、正しく動作していないようです。コントローラヘルパーによる承認:メソッドauthorize()が存在しません - Laravel 5.5
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\[email protected]');
最終私はフォームを送信すると、ここに私のコントローラは
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'で拡張するはずのコントローラを見てください。あなたのファイルの一番上には何もしません。 – lagbox