Bonjour,

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

Ce que je fais

Je cherche a récupérer le text d'un formulaire pour ensuite faire une recherche avec

La vue :

<form action="{{action('MangasController@search')}}" method="post">
                                        <input type="hidden" name="_token" value="{{csrf_token()}}" />
                                        <input type="hidden" name="_method" value="put" />
                                        <input required="required" class="form-control" placeholder="Trouver un manga..." name="search" type="text">
                                        <button type="submit" class="btn btn-primary">
                                            OK
                                        </button>
                                    </form>

Le controler :

 public function search(Request $request)
    {
        var_dump($request);die;
    }

La route

Route::get('mangas/{search}/search', [
    'as' => 'mangas.search',
    'uses' => 'MangasController@search'
]);
Route::resource('mangas', 'MangasController');

Ce que j'obtiens

Cependant, quand je tape un texte, j'obtient ca dans l'url

public/mangas?_token=vHDdkBOty3KwyfqJfzNyWktFx7Edq0ACSqRLcfBY&_method=put&search=ddd

Merci d'avance pour vos réponses ^^

2 réponses


Bonsoir.
Je pense que ta principale erreur se situe dans la définition de ta route, en effet dans celle-ci tu indiques qu'un paramètre search doit être présent dans l'url (mangas/{search}/search) sauf que ce n'est pas le cas lors de la construction de ton formulaire étant donné que celui-ci ne se situe pas dans la vue dédiée pour cette action, notamment pour la méthode GET.

Bonsoir,

A priori il y a plusieurs incohérence dans ton code :

Le formulaire

Pourquoi ne aps indiquer de route ?
Pourquoi indiquer une méthode put ?

Le controller

A la limite il peux passer comme sa mais là il n'est pas cohérent avec route.

Les routes

Forcément elles correspodnent à pas grand chose ..

Je te propsoe :

<form action="{{ route('mangas.search') }}" method="post">
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
        <input required="required" class="form-control" placeholder="Trouver un manga..." name="search" type="text">
        <button type="submit" class="btn btn-primary">OK</button>
</form>
public function search(Request $request)
{
    dd($request);
}
Route::post('mangas/search', 'MangasController@search')->name('mangas.search');

Là ca devrait fonctionner correctement ! :)

Bonne soirée.