Daugiau
laravel meta MethodNotAllowedHttpException
Bandau paleisti kažką labai paprasto. Esu pripratęs prie CI ir dabar mokausi Laravel 4, o jų dokumentai to nepalengvina! Bet kokiu atveju bandau sukurti prisijungimo formą ir tiesiog įsitikinti, kad duomenys sėkmingai paskelbti, spausdinant juos kitoje formoje. Gaunu šią išimtį:
Symfony \ Component \ HttpKernel \ Išimtis \
MethodNotAllowedHttpException
ir mano MemberController.php:
public function index()
{
if (Session::has('userToken'))
{
/*Retrieve data of user from DB using token & Load view*/
return View::make('members/profile');
}else{
return View::make('members/login');
}
}
public function validateCredentials()
{
if(Input::post())
{
$email = Input::post('email');
$password = Input::post('password');
return "Email: " . $email . " and Password: " . $password;
}else{
return View::make('members/login');
}
}
ir maršrutai turi:
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
ir galiausiai mano peržiūra login.php turi šią formos kryptį:
<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Bet kokia pagalba bus labai dėkinga.
102
3
Ši klaida gaunama, nes siunčiate į
GET
maršrutą.Norėčiau padalyti jūsų
validate
maršrutą į atskirusGET
irPOST
maršrutus.Naujieji maršrutai:
Įtariu, kad problema slypi jūsų maršruto apibrėžtyje.
Maršrutą apibrėžėte kaip
GET
užklausą, tačiau forma tikriausiai siunčiaPOST
užklausą. Pakeiskite maršruto apibrėžtį.pagal nutylėjimą
Form::open()
numatoPOST
metodą.savo maršrutuose turite
GET
. pakeiskite jį įPOST
atitinkamame maršrute.arba jei norite naudoti
GET
metodą, pridėkitemethod
parametrą.Pvz.