Laravel 5

Modifier une méthode de requete de get en delete

  • Avatar de jmatike
    Membre depuis :
    07/04/2019
    Messages :
    23

    Bonjour tous.
    Dans une vue avec un formulaire en post, j'ai un code de ce genre

    <form action="{{ route('parse-form') }}" name="listUsers" id="listUsers" method="post">
    @csrf
    <div class="box-header">
    <div class="box-tools">
    @can('activate-user')
    <button type="submit" name="action" value="activate" class="btn btn-success">@lang('user.button.activate')</button>
    @endcan
    @can('deactivate-user')
    <button type="submit" name="action" value="deactivate" class="btn btn-github">@lang('user.button.deactivate')</button>
    @endcan
    @can('delete-admin')
    <button type="submit" name="action" value="delete" class="btn btn-danger">{{ trans("app.btn.deleteAll") }}</button>
    @endcan

    </div>
    </div>
    ....
    <!-- Tableau affichant la collection -->

    Le formulaire appelle la route 'parse-form' qui est en POST evidemment.

    Le controlleur execute la méthode parseForm ci-dessous

    switch ($request->input('action'))
    {
    case 'deactivate':
    $this->change_activation($request->input('ids'), 0);
    break;
    case 'activate':
    $this->change_activation($request->input('ids'), 1);
    break;
    case 'delete':
    $this->multipleDelete($request->input('ids'));
    break;
    }

    En supposant par exemple que l'utilisateur dans la vue, clique sur le bouton de suppression, je ne voudrais plus que dans la méthode parseForm, on appelle la méthode multipleDelete. J'ai l'impression que c'est "plus logique" de faire une redirection.
    Dans le cas du case 'delete', faire plutot

    return redirect()->route('multipleDelete');

    Et dans ce cas, déclarer la route avec un type 'delete'

    Route::delete('users/deleteall', 'UserController@multipleDetele')->name('multipleDelete');

    MON PROBLEME:
    J'ai une erreur évidente qui me dit que je fais un get alors que la route est un delete. Je voudrais donc savoir comment changer on-the-fly le get en delete.

    PS: j'ai utilisé le $request->setMethod('delete'); avant de faire la redirection, mais le changement n'est pas persisté.

Vous ne pouvez pas répondre à ce sujet.