J'ai créé une méthode dans mon modèle d'utilisateur pour télécharger une affiche (avec intervention) pour l'utilisateur:
/**
* 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();
}
}
Dans mon UserController, j'ai une autre méthode qui appelle la méthode statique créée dans le modèle User:
/**
* Store user's poster.
*/
public function poster(Request $request)
{
User::storePoster($request);
}
Voici ma route:
Route::post('/user-profile/store/poster', 'UserController@poster');
Et voici l'erreur que j'obtiens lorsque je navigue vers "/ 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
Bien que si je déplace toute la logique du modèle et que je la mette dans mon UserController, cela fonctionne bien. Une idée pourquoi?
Merci d'avance.
Vous devez utiliser la même classe de demande dans le contrôleur et le modèle, donc dans votre modèle utilisateur, ajoutez use Illuminate\Http\Request
en haut de la classe pour lui indiquer la classe Request à utiliser.