web-dev-qa-db-de.com

Hinzufügen einer Formularaktion in HTML in laravel

Ich kann keine URL in das HTML-Formular-Aktionstag eingeben.

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

Ich möchte die Aktion auf die Funktion [email protected]_in In der Datei WelcomeController in den Controllern einstellen.

Hier sind meine Routen:

Route::get('/','[email protected]');
Route::post('/', array('as' => 'log_in', 'uses' => '[email protected]_in'));
Route::get('home', '[email protected]');

Nach dem Absenden behält es die gleiche URL

http://localhost:8000/

Und die Hauptfehlerzeile

Whoops, looks like something went wrong.

Danach gibt es 1/1 TokenMismatchException in compiled.php line 2440:

20
Shahid Rafiq

Sie können den action() -Helfer verwenden, um eine URL zu Ihrer Route zu generieren:

<form method="post" action="{{ action('[email protected]_in') }}" accept-charset="UTF-8">

Beachten Sie, dass die Laravel 5 Standardinstallation bereits Ansichten und Controller für den gesamten Authentifizierungsprozess enthält. Gehen Sie bei einer Neuinstallation einfach zu /home Und Sie sollten auf eine Anmeldeseite weitergeleitet werden .

Lesen Sie auch unbedingt den Abschnitt Authentifizierung in den Dokumenten


Der Fehler, den Sie jetzt erhalten (TokenMismatchException), ist, weil Laravel CSRF-Schutz sofort verfügbar

Um dies zu nutzen (und den Fehler zu beheben), fügen Sie Ihrem Formular ein ausgeblendetes Feld hinzu:

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

Alternativ können Sie den CSRF-Schutz auch deaktivieren, indem Sie 'App\Http\Middleware\VerifyCsrfToken' Aus dem Array $middleware In app/Http/Kernel.php Entfernen.

30
lukasgeiter

wenn Sie den Controller von der Formularaktion aus aufrufen möchten, haben Sie folgenden Code verwendet:

<form action="{{ action('[email protected]') }}"  >

Hier ist SchoolController ein Controllername und getSchool ein Methodenname. Sie müssen get oder post vor dem Methodennamen verwenden, der derselbe sein sollte wie im Formular-Tag .

6
Jalpesh Khakhi

Benutze action="{{ action('[email protected]_in') }}"

tokenMismatchException bedeutet jedoch, dass in Ihrem Formular ein CSRF-Token fehlt.

Sie können dies hinzufügen, indem Sie <input name="_token" type="hidden" value="{{ csrf_token() }}"> verwenden.

5
FireFistMedia

1) In Laravel 5 wird der Formular-Helfer entfernt. Sie müssen zuerst laravel collective installieren.

Siehe Link: https://laravelcollective.com/docs/5.1/html

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

OR

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

2) Für laravel 4 ist der Formular-Helfer bereits vorhanden

{{ Form::open(array('url' => '/')) }}
5
shalini
{{ Form::open(array('action' => "[email protected]_in")) }}
...
{{ Form::close() }}
3
Farid Movsumov

Laravel 5.8 Schritt 1: Gehe zum Pfad routes/api.php und füge hinzu: Route :: post ('welcome/login', 'WelcomeController @ login') -> name ('welcome.login'); Schritt 2: Wechseln Sie zur Ansicht der Pfaddatei

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

Ergebnis html

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

<form>
3

Sie müssen Ihren Routen einen Namen geben. So was:

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

Ich habe nur Namen auf Routen gesetzt, die dies benötigen. In meinem Fall von Tag-Formular an Blade-Vorlage aufrufen. So was:

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

Oder Sie können dies tun:

<form action="/" >

Folgendes sollte funktionieren.

{{  Form::open( array('url' => action('[email protected]_in'), 'files'=>true,'method'=>'post') )  }}

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

Formular nach Aktion:

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

Ändern Sie Ihre Route: In Routes -> Web.php

Route::post('login','[email protected]_in');
1
Ashish

Ich wollte einen Beitrag in meiner Anwendung speichern und habe daher einen Controller für Beiträge (PostsController) mit den folgenden Ressourcen erstellt:

php artisan make:controller PostsController --resource

Der Controller wurde mit allen Methoden erstellt, die für eine CRUD-App erforderlich sind. Anschließend habe ich den folgenden Code zum Ordner web.php Im Ordner routes hinzugefügt:

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

Ich habe das form action Problem folgendermaßen gelöst:

  1. Ich habe meine Routing-Liste überprüft, indem ich php artisan route:list
  2. Ich habe in der Ergebnistabelle im Terminal nach dem Routennamen der Speichermethode gesucht und ihn unter Name von posts.store Gefunden.
  3. Ich habe dies zum Aktionsattribut meines Formulars hinzugefügt: action="{{route('posts.store')}}" anstelle von action="??what to write here??"
0
van_flucht

In Ihrem Formular fehlt auch "{{csrf_field ()}}".

0
user3257040