Я пытаюсь запустить что-то очень простое. Я привык к CI и теперь изучаю Laravel 4, а их документы не облегчают задачу! В любом случае, я пытаюсь создать форму входа и просто убедиться, что данные успешно опубликованы, распечатав их в следующей форме. Я получаю это исключение:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
и мой 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');
}
}
и маршруты имеют:
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
и, наконец, мой вид login.php имеет это направление формы:
<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Любая помощь будет оценена.
url
вы получаете ошибку?php artisan dump-autoload
?Ответы:
Вы получаете эту ошибку, потому что отправляете сообщение по
GET
маршруту.Я бы разделил вашу маршрутизацию
validate
на отдельныеGET
иPOST
маршруты.Новые маршруты:
Тогда ваш метод контроллера может быть просто
источник
Я подозреваю, что проблема заключается в определении вашего маршрута.
Вы определили маршрут как
GET
запрос, но форма, вероятно, отправляетPOST
запрос. Измените определение маршрута.Как правило, лучше использовать именованные маршруты (помогает масштабироваться при изменении метода / класса контроллера).
В форме используйте следующие
источник
Проблема в том, что вы используете,
POST
но на самом деле вам нужно выполнитьPATCH
Чтобы исправить это, добавьтеСразу после
Form::model
линииисточник
{{ method_field('PATCH') }}
в своем шаблоне.Это потому, что вы публикуете данные с помощью метода get.
Вместо того
Попробуй это
источник
Я столкнулся с этой проблемой , а также и другие ответы здесь были полезны, но я с помощью
Route::resource
которой берет на себяGET
,POST
и другие запросы.В моем случае я оставил свой маршрут как есть:
И просто изменил мою форму, чтобы передать
store
функцию в моемFilesController
Это устранило проблему, и я подумал, что стоит указать на это как отдельный ответ, поскольку в других ответах предлагается добавить новый
POST
маршрут. Это вариант, но не обязательно.источник
Обычно
MethodNotAllowedHttpException
бывает, когдаПредположим, вы определяете
POST
файл маршрута запроса, но отправляетеGET
запрос в маршрут.источник
по умолчанию
Form::open()
предполагаетPOST
метод.у вас есть
GET
в ваших маршрутах. измените его наPOST
в соответствующем маршруте.или если вы хотите использовать
GET
метод, добавьтеmethod
параметр.например
источник
Я столкнулся с ошибкой,
проблема заключалась в СПОСОБЕ ФОРМЫ
Должно быть так
источник
В моем случае я отправлял
POST
запросHTTP
на сервер, на котором я настроилNginx
перенаправление всех запросов на порт80
на порт,443
где я обслуживал приложениеHTTPS
.Выполнение запроса к правильному порту напрямую устранило проблему. В моем случае все, что мне нужно было сделать, это заменить
http://
в URL-адресе запроса на,https://
поскольку я использовал порты по умолчанию80
и443
соответственно.источник
Обычно используется ошибка HTTP-глагола, например:
PUT
Маршрут звонка сPOST
запросомисточник
Моя проблема заключалась не в том, что мои маршруты были настроены неправильно, а в том, что я ссылался на неправильный
Form
метод (который я скопировал из другой формы). Я делал...(без указания модели). Но я должен был использовать обычный
open
метод ...Поскольку первым параметром,
model
ожидаемым от реальной модели, не было ни одной из моих опций, которые я указывал. Надеюсь, это поможет кому-то, кто знает, что их маршруты верны, но что-то еще не так.источник
У меня также была такая же ошибка, но было другое исправление, у меня
XYZ.blade.php
было:что дало мне ошибку - я до сих пор не знаю почему - но когда я изменил его на
Это сработало!
Думал, стоит поделиться :)
источник
Laravel иногда не поддерживает
{!! Form::open(['url' => 'posts/store']) !!}
из соображений безопасности. Вот почему произошла ошибка. Вы можете решить эту ошибку, просто заменив приведенный ниже кодКод ошибки
{!! Form::open(['url' => 'posts/store']) !!}
Правильный код
{!! Form::open(array('route' => 'posts.store')) !!}
источник
В моем случае это произошло потому, что моя форма отправлялась по маршруту с другим промежуточным ПО. Таким образом, он заблокировал отправку информации по этому конкретному маршруту.
источник
хорошо, когда у меня была эта проблема, я столкнулся с 2 ошибками кода
я исправил это, сделав это
так что просто разглагольствовать я изменил форму
model
с ,open
а также маршрут , где ошибочно помещены в квадратные скобки.источник
источник