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
Réponse acceptée

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