Probléme Controller Create Laravel 5.0

Par Zekura, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je cherches, lors d'une creation d'un tome, faire l'association entre la table manga et volume. La table volume à la clé étrangére de la table manga.

Dans la view Manga

<li class="nav-item"> <span class="fa fa-book" style="color: white"></span> <a href="{{action('VolumesController@create', $id)}}">Ajouter un volume</a> </li>

Dans la view form pour la creation du volume

{!! Form::model($volumes, ['url' => action("VolumesController@$action", $volumes, $id), 'method' => $action == "store" ? "Post" : "Put"]) !!} <div class="form-group"> <label class="col-md-4 control-label">Numéro</label> <div class="col-md-6"> {!! Form::input('number','number_Volume', null, ['class' => 'form-control']) !!} </div> </div> <div class="form-group"> <label class="col-md-4 control-label">Nombre de pages</label> <div class="col-md-6"> {!! Form::input('number','number_Pages_Volume', null, ['class' => 'form-control']) !!} </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <button type="submit" class="btn btn-primary"> Sauvegarder </button> </div> </div> {!! Form::close() !!}

Dans le fichier route

Route::get('volumes/create/{id}', [ 'as' => 'volumes.create', 'uses' => 'VolumesController@create' ]); Route::resource('volumes', 'VolumesController', ['except' => 'create']);

Dans le controller Volume

public function store(VolumesRequest $request, $id) { var_dump($id); die; }

Ce que j'obtiens

Cependant, j'arrive pas à faire passer le second paramétre

Erreur : Missing argument 2 for App\Http\Controllers\VolumesController::store()

1 réponse

Amilti, il y a 8 ans

Hello,
Tu utilises Route:resource pour ton Model volume
Du cou par défaut la méthode store ne prendra pas d'id en paramètre juste une request .

d'ou l'erreur Missing argument 2 .

pour régler ton problème il faut que tu enlèves ton $id dans l'url que tu gèneres, ajouter dans ton formulaire un champ input qui va contenir l'id du manga :

{!! Form::input('hidden','manga_id', $id, ['class' => 'form-control']) !!}

Et ta méthode store ressemblera à ça :

//penses à vérifier dans ton VolumeRequest que manga_id existe en BDD public function store(VolumesRequest $request) { $data = $request->all(); dd($data); //array qui contient tes champs }

Je te conseil de regarder le tuto de Grafikart sur les resources REST https://www.grafikart.fr/tutoriels/php/rest-503 .
ça t'aidera à comprendre le principe et à ne plus faire cette erreur