0

こんにちは、私のlaravelアプリのコメントシステムを作成していますが、コメントしようとするとこのエラーが発生します..基本的に、ユーザーがログインしていないときにコメントして送信しようとすると、ログインページにリダイレクトされるはずです。 CreateRequestファイルはこれ

<?php

namespace App\Http\Requests\Comment;

use App\Http\Requests\Request;
use App\Repositories\Image\ImageRepository;

class CreateRequest extends Request {
    /**
     * Determine if the user is authorized to make this request.
     *
     * @param ImageRepository $image
     * @return bool
     */
    public function authorize(ImageRepository $image) {
        $image = $image->getById($this->route('id'))->first();
        if (!$image) {
            return false;
        }
        return auth()->check();
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules() {
        return [
            'comment' => ['required', 'min:2'],
        ];
    }

    /**
     * @return \Illuminate\Http\RedirectResponse
     */
    public function forbiddenResponse() {
        return redirect()->route('login');
    }
}

私のApp\Http\Requests\Requestファイルはこれです

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

abstract class Request extends FormRequest {
    public function authorize() {
        return true;
    }
}

取り除けば

public function authorize() {
    return true;
}

その後、コメントが機能し、ユーザーがログインしていない場合、ユーザーはログインページにリダイレクトされますが、ログインが機能せず、ログインしようとすると禁止されます

このプロジェクトの上にアプリを開発しています https://github.com/laravelish/EasyAdmin 誰かが私を助けてくれることを願っています

4

1 に答える 1

2

authorize抽象 Request クラスでメソッドを定義しました。

public function authorize() {
    return true;
}

パラメータを取らないことに注意してください。この抽象クラスを拡張して (CreateRequest で行っているように)、authorizeメソッドを記述する場合は、同じ署名を使用する必要があります。具体的authorizeには、抽象クラスにないため、パラメーターを取ることはできません。


authorize抽象クラスからメソッドを削除すると、この特定のエラーはなくなります。ただし、それで問題が解決するかどうかはわかりません。Laravel がメソッドに依存性注入を提供しているとは思わないauthorize。そのようにリポジトリを注入することはできない。

これは、両方の問題を修正する 1 つの方法です。

public function authorize() {
    $image = app(ImageRepository::class)->getById($this->route('id'))->first();
    ...
于 2016-06-13T12:32:00.150 に答える