web-dev-qa-db-fra.com

Ajout d’une action de formulaire en HTML dans laravel

Je suis incapable de transmettre l'URL dans les balises d'action du formulaire html.

<form method="post" action="??what to write here??" accept-charset="UTF-8">

Je veux mettre l'action sur WelcomeController@log_in fonction dans le fichier WelcomeController dans les contrôleurs.

Voici mes itinéraires:

Route::get('/','WelcomeController@home');
Route::post('/', array('as' => 'log_in', 'uses' => 'WelcomeController@log_in'));
Route::get('home', 'HomeController@index');

Après avoir soumis, conserve la même URL

http://localhost:8000/

Et la ligne d'erreur principale

Whoops, looks like something went wrong.

Après cela, il y a 1/1 TokenMismatchException in compiled.php line 2440:

20
Shahid Rafiq

Vous pouvez utiliser l’assistant action() pour générer une URL vers votre route:

<form method="post" action="{{ action('WelcomeController@log_in') }}" accept-charset="UTF-8">

Notez que l’installation par défaut Laravel 5 est déjà fournie avec les vues et les contrôleurs pour l’ensemble du processus d’authentification. Allez simplement à /home sur une nouvelle installation et vous devriez être redirigé vers une page de connexion.

Assurez-vous également de lire le section d’authentification dans la documentation


L'erreur que vous obtenez maintenant (TokenMismatchException) est due au fait que Laravel a protection CSRF prête à l'emploi

Pour l'utiliser (et faire disparaître l'erreur), ajoutez un champ caché à votre formulaire:

<input name="_token" type="hidden" value="{{ csrf_token() }}"/>

Sinon, vous pouvez également désactiver la protection CSRF en supprimant 'App\Http\Middleware\VerifyCsrfToken' du $middleware tableau dans app/Http/Kernel.php

30
lukasgeiter

si vous voulez appeler le contrôleur à partir d'une action de formulaire, ce temps a utilisé le code suivant:

<form action="{{ action('SchoolController@getSchool') }}"  >

Ici SchoolController est un nom de contrôleur et getSchool est un nom de méthode, vous devez utiliser get ou post avant le nom de la méthode, qui devrait être identique à celui de la balise de formulaire. .

6
Jalpesh Khakhi

Utilisez action="{{ action('WelcomeController@log_in') }}"

cependant, TokenMismatchException signifie qu'il vous manque un jeton CSRF dans votre formulaire.

Vous pouvez ajouter ceci en utilisant <input name="_token" type="hidden" value="{{ csrf_token() }}">

5
FireFistMedia

1) Dans Laravel 5, l’assistant de formulaire est supprimé. Vous devez d’abord installer laravel collectif.

Lien de référence: https://laravelcollective.com/docs/5.1/html

{!! Form::open(array('route' => 'log_in')) !!}

OR

{!! Form::open(array('route' => '/')) !!}

2) Pour laravel 4, l'assistant de formulaire est déjà là

{{ Form::open(array('url' => '/')) }}
5
shalini
{{ Form::open(array('action' => "WelcomeController@log_in")) }}
...
{{ Form::close() }}
3
Farid Movsumov

Laravel 5.8 Étape 1: Accédez au chemin routes/api.php add: Route :: post ('welcome/login', 'WelcomeController @ login') -> name ('welcome.login'); Étape 2: Accédez à la vue du fichier de chemin

<form method="POST" action="{{ route('welcome.login') }}">
</form>

Résultat html

<form method="POST" action="http://localhost/api/welcome/login">

<form>
3
Mau Xanh Cua Linh

Vous devez attribuer un nom à vos itinéraires. Comme ça:

 
 Route :: get ('/', 'WelcomeController @ home') -> nom ('welcome.home'); 
 Route :: post ('/', array ('as' => 'log_in', 'uses' => 'WelcomeController @ log_in')) -> name ('welcome.log_in'); 
 Route :: get ('home', 'HomeController @ index ') -> nom (' home.index '); 
 

Je viens de mettre le nom sur les routes qui en ont besoin. Dans mon cas, appeler de la forme de la balise au modèle de la lame. Comme ça:

<form action="{{ route('home.index') }}" >

Ou, vous pouvez faire ceci:

<form action="/" >

Ce qui suit devrait fonctionner.

{{  Form::open( array('url' => action('WelcomeController@log_in'), 'files'=>true,'method'=>'post') )  }}

...
{{ Form::close() }}
2
Rio

Formulaire Post Action:

<form method="post" action="{{url('login')}}" accept-charset="UTF-8">

Changez votre itinéraire: Dans Itinéraires -> Web.php

Route::post('login','WelcomeController@log_in');
1
Ashish

Je voulais stocker une publication dans mon application, j'ai donc créé un contrôleur de publications (PostsController) avec les ressources suivantes:

php artisan make:controller PostsController --resource

Le contrôleur a été créé avec toutes les méthodes nécessaires pour faire une application CRUD, puis j'ai ajouté le code suivant au web.php Dans le dossier routes:

Route::resource('posts', 'PostsController');

J'ai résolu le problème formulaire action en procédant comme suit:

  1. J'ai vérifié ma liste de routage en faisant php artisan route:list
  2. J'ai cherché le nom de la route du méthode store dans le tableau des résultats du terminal et je l'ai trouvé sous le nom de posts.store
  3. J'ai ajouté ceci au attribut d'action de mon formulaire: action="{{route('posts.store')}}" au lieu de action="??what to write here??"
0
van_flucht

Votre formulaire manque également '{{csrf_field ()}}'

0
user3257040