Laravel 5 MethodNotAllowedHttpException in RouteCollection.php Linie 201:
Habe ich eine Reihe von php-Dateien in meinem Projekt:
admin.blade.php
: diese Datei enthält die admin form.
Wenn Sie aufgerufen wird, zeigt es die folgende Fehlermeldung:
MethodNotAllowedHttpException in RouteCollection.php Linie 201
<h2>Please Log In To Manage</h2>
<form id="form1" name="form1" method="post" action="<?=URL::to('/admin')?>">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
User Name:<br />
<input name="username" type="text" id="username" size="40" />
<br /><br />
Password:<br />
<input name="password" type="password" id="password" size="40" />
<br />
<br />
<br />
<input type="submit" name="button" id="button" value="Log In" />
</form>
In route.php
dieser Aufruf gemacht wird:
Route::get('/admin',array('uses'=>'student@admin'));
In dieser Funktion student.php
public function admin()
{
return View::make('student.admin');
$validator = Validator::make($data = Input::all() , User::rules());
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
else
{
$check = 0;
$check = DB::table('admin')->get();
$username = Input::get('username');
$password = Input::get('password');
if (Auth::attempt(['username' => $username, 'password' => $password]))
{
return Redirect::intended('/');
}
return Redirect::back()->withInput()->withErrors('That username/password combo does not exist.');
}
}
Weiß ich nicht viel über das erstellen eines admin-Bereich, ich versuche nur, um es zu schaffen.
- Sie sind mit
post
- Methode in der form, aber mitget
Methode in den Routen ! - sollte ich chnge bekommen, die in meine form??
- Ändern Ihre Routen und sehen, was passiert 😉
- ändern Sie Ihre route zu posten , Route::post('/admin',array('uses'=>'student@admin'));
- es zeigt die gleiche Fehlermeldung, während ich die post zu tun, um sowohl die route und die form und wenn ich das mache bekommen die beiden dann komme ich auf die gleiche Seite wieder und wieder nach dem submit.
- Sie müssen eine get-route und eine assoziierende Methode im controller zum anzeigen des Formulars und eine post-route und die Zuordnung der Methode zum speichern von Daten in DB
- verwenden Sie diese Route::match(['get', 'post'], '/admin', 'student@admin');
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich es mache.
Routes.php
admin_login.blade.php
dashboard.blade.php
UsersController.php
Code:
In
routes.php
haben Sie nur 1 route, d.h.,Und es gibt keine Erklärung der
post
Methode, also dieMethodNotAllowedHttpException
Auch in Ihrem controller, sind Sie wieder die Ansicht zuerst und dann die Bearbeitung des Formulars, die nicht geht ist, überhaupt zu arbeiten. Sie müssen zunächst verarbeiten Sie die form und dann wieder den Blick.
Als @Sulthan hat vorgeschlagen, die Sie verwenden sollten
Form Facade
. Sie können sich dieses video auf Laracasts über das, wasForm Facade
ist und wie Sie es verwenden sollten.Bist du mit
post
- Methode in der form, aber Sie habenget
Methode in die Wege.So Ändern Sie die Methode, um
post
Ihre RoutenHinweis :
Empfehle ich Ihnen, nutzen Sie die Standard-form der öffnung von Laravel wie die unten gegeben, das ist immer die beste Praxis
Tipps :
Lesen Sie mehr auf hier und versuchen zu Debuggen, solche Dinge durch den Vergleich der Methoden und Routen.
Form der Fassade ist nicht enthalten in laravel 5 standardmäßig. Sie soll es installieren, indem Sie
und Aktualisierung der app.php.
Habe ich geschrieben blog gibt einen breif über diese installation.
return Input::all();
?get
(eine blinde Art und Weise)return Request::all();
Routen web.php
Dein code ist
falsch ist.
Eigentlich ist die übermittlung von Daten im POST-Methode, die das Spektrum der Daten, so dass Sie brauchen, um die route durch post anstelle von get.
so richtige code ist
Folgen Sie diesem tutorial form Laracast es vielleicht hilfreich,
https://laracasts.com/series/laravel-from-scratch-2017/episodes/16
In
routes.php
ersetzenRoute::get
durchRoute::post
.Haben Sie keine post-route für Ihre Daten in das Formular buchen , verwenden Sie route match-Funktion für http-verb (get & post). verwenden Sie diese
Route::match(['get', 'post'], '/admin', 'student@admin');
Darüber hinaus müssen Sie ändern Sie Ihre admin-Methode,