Переданный аргумент 1 должен быть экземпляром App \ Request, заданным экземпляром Illuminate \ Http \ Request.

Я создал метод в своей модели User для загрузки плаката (с вмешательством) для пользователя:

/**
* Store user's poster.
*/
public static function storePoster(Request $request) 
{
    if($request->hasFile('posterUpload')){

        $poster = $request->file('posterUpload');

        $filename = time() . '.'. $poster->getClientOriginalExtension();

        Image::make($poster)->resize(356,265)->save(public_path('/uploads/posters/'.$filename));

        $check = Setting_user::where([
                ['user_id', '=' ,Auth::user()->id],
                ['setting_id','=', 2],
        ])->first();

        if(!$check)
        {
            $setting = new Setting_user();
            $setting->user_id = Auth::user()->id;
            $setting->setting_id = 2;
            $setting->value = $filename;
            $setting->save();
            return back();
        }

        $check->value = $filename;
        $check->update();
        return back();

    }

}

В моем UserController есть еще один метод, который вызывает статический метод, созданный в модели User:

/**
* Store user's poster.
*/
public function poster(Request $request) 
{
     User::storePoster($request);

}

Это мой маршрут:

Route::post('/user-profile/store/poster', 'UserController@poster');

И вот ошибка, которую я получаю, когда перехожу в «/ user-profile / store / poster»:

Argument 1 passed to App\User::storePoster() must be an instance of App\Request, instance of Illuminate\Http\Request given, called in C:\xampp\htdocs\laravel\laravel-paper-dashboard\app\Http\Controllers\UserController.php on line 29 and defined

Хотя, если я перенесу всю логику из модели в свой UserController, она будет работать нормально. Есть идеи, почему?

Заранее спасибо.


person Marco    schedule 19.07.2017    source источник
comment
добавить use App \ Http \ Requests; перед вашим классом   -  person RAUSHAN KUMAR    schedule 19.07.2017


Ответы (1)


Вам нужно использовать один и тот же класс запроса в контроллере и модели, поэтому в пользовательской модели добавьте use Illuminate\Http\Request в верхней части класса, чтобы сообщить ему, какой класс запроса использовать.

person Khalid Dabjan    schedule 19.07.2017