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:
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
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. .
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() }}">
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' => '/')) }}
{{ Form::open(array('action' => "WelcomeController@log_in")) }}
...
{{ Form::close() }}
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>
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() }}
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');
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:
php artisan route:list
posts.store
action="{{route('posts.store')}}"
au lieu de action="??what to write here??"
Votre formulaire manque également '{{csrf_field ()}}'