2015-03-11 5 views
10

Ich bin nicht in der Lage, URL in Ansichten HTML Form Action Tag übergeben.Hinzufügen von Formular Aktion in HTML in Laravel

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

Ich möchte setzen es Aktion ist zu [email protected]_in Funktion in WelcomeController Datei in Controllern.

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 es die gleiche URL

http://localhost:8000/ 

und die Haupt Fehlerzeile

Whoops, looks like something went wrong. 

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

+0

mit welchem ​​Rahmen Sie verwenden? – ajaykumartak

+1

laravel framework –

Antwort

17
hält

Sie können die 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 Standard-Installation bereits mit Ansichten und Controller für den gesamten Authentifizierungsprozess kommt. Gehen Sie einfach auf eine neue Installation zu /home und Sie sollten auf eine Anmeldeseite umgeleitet werden.

Auch stellen Sie sicher, dass die Authentication section in the docs


Der Fehler jetzt, Sie bekommen lesen (TokenMismatchException) ist, weil Laravel hat CSRF protection out of the box

Zum Gebrauch davon (und machen den Fehler gehen weg) zu machen ein verstecktes Feld zum Formular hinzufügen:

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

Alternativ können Sie auch durch das EntfernenCSRF-Schutz deaktivierenvom $middleware Array in app/Http/Kernel.php

+0

Die Startseite wurde gestartet, aber nach dem Klicken auf die Senden-Schaltfläche wird nicht auf diese Seite zugegriffen. –

+0

Kann ich Ihre Routen sehen? (bearbeiten Sie Ihre Frage) – lukasgeiter

+0

'log_in', 'verwendet' => 'WelcomeController @ log_in')); –

3
{{ Form::open(array('action' => "[email protected]_in")) }} 
... 
{{ Form::close() }} 
+5

Eine plain-Englisch Erklärung würde nicht schaden ... – Jubobs

+2

Jeder mit ein wenig Programmierkenntnisse kann verstehen. – zundi

3

1) In Laravel 5 wird Form helper .Sie müssen entfernt ersten Laravel kollektive installieren.

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

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

ODER

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

2) Für Laravel 4, Form Helfer schon da ist

{{ Form::open(array('url' => '/')) }} 
1

Die folgenden funktionieren sollte.

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

... 
{{ Form::close() }} 
5

wenn Sie von Form Regler nennen, die verwendete Zeit folgendem Code:

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

Hier SchoolController ist ein Controller-Name und getSchool ist ein Methodenname, Sie get oder post vor Methode verwenden müssen Name, der dem Form-Tag entsprechen sollte.

1

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

jedoch TokenMismatchException bedeutet, dass Sie ein CSRF-Token in Ihrem Formular fehlen.

Sie können dies mit Hilfe <input name="_token" type="hidden" value="{{ csrf_token() }}">

+0

Diese Antwort ist im Wesentlichen die gleiche wie die angenommene und am meisten gewählte Antwort ... mit weniger Details. Es wäre besser, diese Antwort zu verbessern als hinzuzufügen –

Verwandte Themen