laravel throwing MethodNotAllowedHttpException

Я пытаюсь получить что-то очень простое. Я привык к 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', '[email protected]'); Route::get('/validate', '[email protected]'); 

и, наконец, мой вид login.php имеет это направление формы:

  '[email protected]')); ?> 

Любая помощь будет оценена.

Вы получаете эту ошибку, потому что вы отправляете POST на маршрут GET.

Я бы разделил вашу маршрутизацию на «проверку» на отдельные маршруты GET и POST. Новые маршруты:

 Route::post('validate', '[email protected]'); Route::get('validate', function() { return View::make('members/login'); }); 

Тогда ваш метод controllerа может быть просто

 public function validateCredentials() { $email = Input::post('email'); $password = Input::post('password'); return "Email: " . $email . " and Password: " . $password; } 

Проблема в том, что вы используете POST, но на самом деле вам нужно выполнить PATCH. Чтобы исправить это добавление

  

Только после формы :: model line

Мое подозрение заключается в том, что проблема заключается в определении маршрута. Вы определили маршрут как запрос «получить», но форма, вероятно, отправляет запрос «post». Измените определение маршрута.

 Route::post('/validate', '[email protected]'); 

Обычно лучше использовать именованные маршруты (помогает масштабировать, если изменяется class / class controllerа).

 Route::post('/validate', array('as' => 'validate', 'uses' => '[email protected]')); 

В форме используйте следующие

  'validate')); ?> 

Я столкнулся с этой проблемой, и другие ответы здесь были полезными, но я использую Route::resource который заботится о GET , POST и других запросах.

В моем случае я оставил свой маршрут, как есть:

Route::resource('file', 'FilesController');

И просто изменил мою форму, чтобы отправить в функцию store в моем FilesController

{{ Form::open(array('route' => 'file.store')) }}

Это устранило проблему, и я подумал, что стоит отметить отдельный ответ, поскольку различные другие ответы предлагают добавить новый маршрут POST . Это вариант, но это необязательно.

'[email protected]')); ?>

По умолчанию Form::open() принимает метод POST .

вы попадаете на свои маршруты. измените его на post в соответствующем маршруте.

или если вы хотите использовать метод get, добавьте параметр method .

например

Form::open(array('url' => 'foo/bar', 'method' => 'get'))

Я столкнулся с ошибкой,
проблемой был ФОРМОВЫЙ МЕТОД

  {{Форма :: open (массив ('url' => 'admin / doctor / edit /'.$ doctor-> doctor_id,' class '=>' form-horizontal form-bordered form-row-stripped ',' method '=>' PUT ',' files '=> true))}}

это должно быть так

  {{Форма :: open (массив ('url' => 'admin / doctor / edit /'.$ doctor-> doctor_id,' class '=>' form-horizontal form-bordered form-row-stripped ',' method '=>' POST ',' files '=> true))}}

Как правило, в HTTP-глаголе есть ошибка: например, вызов PUT-маршрута с запросом POST

Моя проблема была не в том, что мои маршруты были установлены неправильно, но я ссылался на неправильный метод Form (который я скопировал из другой формы). Я делал…

 {!! Form::model([ ... ]) !!} 

(без указанной модели). Но я должен был использовать обычный open метод …

 {!! Form::open([ ... ]) !!} 

Поскольку первый параметр model предполагает реальную модель, он не получил никаких моих опций, которые я указывал. Надеюсь, это поможет кому-то, кто знает, что их маршруты правильные, но что-то еще не так.

У меня также была такая же ошибка, но у меня было отличное исправление, в моем XYZ.blade.php у меня было:

 {!! Form::open(array('url' => 'services.store')) !!} 

который дал мне ошибку, – я все еще не понимаю почему, но когда я изменил его на

{!! Form::open(array('route' => 'services.store')) !!}

это сработало!

я думал, что стоит поделиться 🙂

В моем случае я отправлял POST-запрос по HTTP на сервер, на котором у меня была установка nginx для перенаправления всех запросов на порт 80 на порт 443, где я обслуживал приложение через HTTPS.

Выполнение запроса на правильный порт напрямую устранило проблему. В моем случае все, что мне нужно было сделать, это заменить (http: //) в URL запроса на (https: //), так как я использовал порты по умолчанию 80 и 443 соответственно.

хорошо, когда у меня была эта проблема, я столкнулся с 2 ошибками кода {!! Form::model(['method' => 'POST','route' => ['message.store']]) !!} {!! Form::model(['method' => 'POST','route' => ['message.store']]) !!} Я исправил это, сделав это {!! Form::open(['method' => 'POST','route' => 'message.store']) !!} {!! Form::open(['method' => 'POST','route' => 'message.store']) !!}

поэтому просто для расширения я изменил model формы, чтобы open а также маршрут, где неправильно помещены в квадратные скобки.

Иногда Laravel не поддерживает {!! Form::open(['url' => 'posts/store']) !!} {!! Form::open(['url' => 'posts/store']) !!} по соображениям безопасности. Вот почему произошла ошибка. Вы можете решить эту ошибку, просто заменив приведенный ниже код

 {!! Form::open(array('route' => 'posts.store')) !!} 

Код ошибки {!! Form::open(['url' => 'posts/store']) !!} {!! Form::open(['url' => 'posts/store']) !!}

Правильный код {!! Form::open(array('route' => 'posts.store')) !!} {!! Form::open(array('route' => 'posts.store')) !!}

В моем случае это было потому, что моя форма отправлялась на маршрут с другим промежуточным программным обеспечением. Поэтому он заблокировал отправку информации на этот конкретный маршрут.

Interesting Posts

Как использовать UIPageControl для создания нескольких видов?

Это размер адресной шины или размер шины данных, который определяет «8-битные, 16-битные, 32-битные, 64-битные» системы?

ConcurrentModificationException для ArrayList

Как перезапустить панель задач?

Как нарисовать точку (на mouseclick) на QGraphicsScene?

Как найти индекс элемента в массиве в Java?

Как передать текущий элемент методу Java, нажав гиперссылку или кнопку на странице JSP?

«Непринятая ошибка: » с угловым после развертывания

Передача списка на другую активность в Android

Предложение «ИЛИ» в папках поиска Outlook 2007 – состав папок

Как отправить параметры из уведомления об уведомлении на мероприятие?

Почему в массиве 2048×2048 против 2047×2047 массив умножается?

Зарегистрировать class приложения в манифесте?

ПК-коммутатор для USB-концентраторов?

Какое аппаратное устройство использовало, чтобы съесть 1,4 ГБ моей 4 ГБ ОЗУ, и теперь внезапно после того, как никакие аппаратные изменения не съедят 2,2 ГБ?

Давайте будем гением компьютера.