Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException - Laravel 5.7

у меня есть маршрут

Route::post('skill/store','SkillController@store');

У меня есть форма, которая вызывает это

{!! Form::open(array('class' => 'form-horizontal', 'role' =>'form', 'url'=>'skill/store','files' => true, 'method' => 'POST' )) !!}

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException - Laravel 5.7

При отправке я продолжал получать

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException - Laravel 5.7

Как можно было бы отлаживать это дальше?

+--------+----------+--------------------------------------------------------+-----------------------------+------------------------------------------------------------------------+----------------+
| Domain | Method   | URI                                                    | Name                        | Action                                                                 | Middleware     |
+--------+----------+--------------------------------------------------------+-----------------------------+------------------------------------------------------------------------+----------------+
|        | POST     | /                                                      |                             | App\Http\Controllers\AccountController@postSignIn                      | web            |
|        | GET|HEAD | /                                                      |                             | App\Http\Controllers\FEController@index                                | web            |
|        | GET|HEAD | api/distributors                                       |                             | App\Http\Controllers\APIController@getDistributors                     | web            |
|        | GET|HEAD | api/reset-password                                     |                             | App\Http\Controllers\APIController@resetPassword                       | web            |
|        | GET|HEAD | code/{file}/_                                          |                             | App\Http\Controllers\ToolController@showFile                           | web            |
|        | GET|HEAD | coding-puzzle                                          |                             | App\Http\Controllers\CodeController@codingPuzzle                       | web            |
|        | POST     | coding-puzzle/process                                  |                             | App\Http\Controllers\CodeController@codingPuzzleProcess                | web            |
|        | GET|HEAD | contact                                                |                             | App\Http\Controllers\ContactController@index                           | web,auth       |
|        | POST     | contact-form                                           |                             | App\Http\Controllers\AccountController@contact                         | web            |
|        | GET|HEAD | contact/{id}                                           |                             | App\Http\Controllers\ContactController@show                            | web,auth       |
|        | DELETE   | contact/{id}/destroy                                   | contact.destroy             | App\Http\Controllers\ContactController@destroy                         | web,auth       |
|        | GET|HEAD | dashboard                                              |                             | App\Http\Controllers\FEController@dashboard                            | web,auth       |
|        | POST     | forgot-password                                        | forgot-password-post        | App\Http\Controllers\AccountController@postForgotPassword              | web            |
|        | GET|HEAD | getCaptivePortalURLs/{hostname}/{cpe_mac}/{device_mac} |                             | App\Http\Controllers\ToolController@getCaptivePortalURLs               | web            |
|        | GET|HEAD | getCertbyHostName/{hostname}                           |                             | App\Http\Controllers\ToolController@getCertbyHostName                  | web            |
|        | GET|HEAD | getCommitIDBaseOnBuildNumber/{buildNumber}             |                             | App\Http\Controllers\ToolController@getCommitIDBaseOnBuildNumber       | web            |
|        | GET|HEAD | getImagesFromSite/{hostname}                           |                             | App\Http\Controllers\ToolController@getImagesFromSite                  | web            |
|        | GET|HEAD | getUpdateServiceTypeCommand                            |                             | App\Http\Controllers\ToolController@getUpdateServiceTypeCommand        | web            |
|        | GET|HEAD | getskilldata                                           | getskilldata                | App\Http\Controllers\SkillController@skilldata                         | web            |
|        | GET|HEAD | guest                                                  |                             | App\Http\Controllers\GuestController@index                             | web,auth       |
|        | GET|HEAD | guest/create                                           | guest.create                | App\Http\Controllers\GuestController@create                            | web,auth       |
|        | POST     | guest/store                                            |                             | App\Http\Controllers\GuestController@store                             | web,auth       |
|        | GET|HEAD | guest/{id}                                             |                             | App\Http\Controllers\GuestController@show                              | web,auth       |
|        | DELETE   | guest/{id}/destroy                                     | guest.destroy               | App\Http\Controllers\GuestController@destroy                           | web,auth       |
|        | GET|HEAD | guest/{id}/edit                                        |                             | App\Http\Controllers\GuestController@edit                              | web,auth       |
|        | PUT      | guest/{id}/update                                      | guest.update                | App\Http\Controllers\GuestController@update                            | web,auth       |
|        | GET|HEAD | image                                                  |                             | App\Http\Controllers\ImageController@index                             | web,auth,admin |
|        | GET|HEAD | image/create                                           |                             | App\Http\Controllers\ImageController@create                            | web,auth,admin |
|        | POST     | image/store                                            |                             | App\Http\Controllers\ImageController@store                             | web,auth,admin |
|        | PUT      | image/type/{id}/update                                 |                             | App\Http\Controllers\ImageController@updateType                        | web,auth,admin |
|        | GET|HEAD | image/types                                            |                             | App\Http\Controllers\ImageController@types                             | web,auth,admin |
|        | GET|HEAD | image/{id}                                             |                             | App\Http\Controllers\ImageController@get                               | web,auth,admin |
|        | DELETE   | image/{id}/destroy                                     |                             | App\Http\Controllers\ImageController@destroy                           | web,auth,admin |
|        | GET|HEAD | image/{id}/edit                                        |                             | App\Http\Controllers\ImageController@edit                              | web,auth,admin |
|        | PUT      | image/{id}/update                                      |                             | App\Http\Controllers\ImageController@update                            | web,auth,admin |
|        | GET|HEAD | images                                                 |                             | App\Http\Controllers\ImageController@all                               | web,auth,admin |
|        | GET|HEAD | info                                                   |                             | App\Http\Controllers\FEController@info                                 | web            |
|        | POST     | login                                                  |                             | App\Http\Controllers\Auth\LoginController@login                        | web,guest      |
|        | GET|HEAD | login                                                  | login                       | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest      |
|        | POST     | logout                                                 | logout                      | App\Http\Controllers\Auth\LoginController@logout                       | web            |
|        | GET|HEAD | logout                                                 |                             | App\Http\Controllers\FEController@getSignout                           | web,auth       |
|        | GET|HEAD | logs                                                   |                             | App\Http\Controllers\GeneralController@logs                            | web,auth,admin |
|        | GET|HEAD | nuc/{tableName}                                        |                             | App\Http\Controllers\DatabaseController@show                           | web            |
|        | POST     | password/email                                         | password.email              | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest      |
|        | POST     | password/reset                                         | password.update             | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest      |
|        | GET|HEAD | password/reset                                         | password.request            | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest      |
|        | GET|HEAD | password/reset/{token}                                 | password.reset              | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest      |
|        | GET|HEAD | phpinfo                                                |                             | App\Http\Controllers\GeneralController@phpinfo                         | web,auth       |
|        | GET|HEAD | portfolio                                              |                             | App\Http\Controllers\PortfolioController@index                         | web,auth,admin |
|        | GET|HEAD | portfolio/all                                          |                             | App\Http\Controllers\FEController@portfolioall                         | web            |
|        | GET|HEAD | portfolio/create                                       |                             | App\Http\Controllers\PortfolioController@create                        | web,auth,admin |
|        | POST     | portfolio/image/{id}/destroy                           |                             | App\Http\Controllers\PortfolioController@destroyImage                  | web,auth,admin |
|        | POST     | portfolio/store                                        |                             | App\Http\Controllers\PortfolioController@store                         | web,auth,admin |
|        | DELETE   | portfolio/{id}/destroy                                 |                             | App\Http\Controllers\PortfolioController@destroy                       | web,auth,admin |
|        | GET|HEAD | portfolio/{id}/edit                                    |                             | App\Http\Controllers\PortfolioController@edit                          | web,auth,admin |
|        | GET|HEAD | portfolio/{id}/get                                     |                             | App\Http\Controllers\PortfolioController@get                           | web,auth,admin |
|        | POST     | portfolio/{id}/update                                  |                             | App\Http\Controllers\PortfolioController@update                        | web,auth,admin |
|        | GET|HEAD | projects/oop/{id}                                      |                             | App\Http\Controllers\ProjectController@oop                             | web,auth,admin |
|        | GET|HEAD | register                                               | register                    | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest      |
|        | POST     | register                                               |                             | App\Http\Controllers\AccountController@postRegister                    | web            |
|        | POST     | reset-password                                         | reset-password-post         | App\Http\Controllers\AccountController@postReSetPassword               | web            |
|        | GET|HEAD | reset-password/{code}                                  | reset-password              | App\Http\Controllers\AccountController@getReSetPassword                | web            |
|        | GET|HEAD | resume                                                 |                             | App\Http\Controllers\GeneralController@resume                          | web            |
|        | GET|HEAD | resume/doc                                             |                             | App\Http\Controllers\GeneralController@resumeDoc                       | web            |
|        | GET|HEAD | run/{file}                                             |                             | App\Http\Controllers\GeneralController@code                            | web            |
|        | GET|HEAD | run/{file}/_                                           |                             | App\Http\Controllers\ToolController@showFile                           | web            |
|        | GET|HEAD | seed/{tableName}                                       |                             | App\Http\Controllers\DatabaseController@seed                           | web            |
|        | POST     | set-password                                           | set-password-post           | App\Http\Controllers\AccountController@postSetPassword                 | web            |
|        | GET|HEAD | set-password/{code}                                    | set-password                | App\Http\Controllers\AccountController@getSetPassword                  | web            |
|        | GET|HEAD | showFiles                                              |                             | App\Http\Controllers\ToolController@showFiles                          | web            |
|        | GET|HEAD | showFiles/{fileName}                                   |                             | App\Http\Controllers\ToolController@showFile                           | web            |
|        | GET|HEAD | skill                                                  |                             | App\Http\Controllers\SkillController@index                             | web,auth,admin |
|        | GET|HEAD | skill/create                                           |                             | App\Http\Controllers\SkillController@create                            | web,auth,admin |
|        | POST     | skill/store                                            | skill.store                 | App\Http\Controllers\SkillController@store                             | web,auth,admin |
|        | DELETE   | skill/{id}/destroy                                     |                             | App\Http\Controllers\SkillController@destroy                           | web,auth,admin |
|        | GET|HEAD | skill/{id}/edit                                        |                             | App\Http\Controllers\SkillController@edit                              | web,auth,admin |
|        | POST     | skill/{id}/update                                      |                             | App\Http\Controllers\SkillController@update                            | web,auth,admin |
|        | GET|HEAD | skills                                                 |                             | App\Http\Controllers\SkillController@all                               | web            |
|        | GET|HEAD | user                                                   |                             | App\Http\Controllers\UserController@index                              | web,auth,admin |
|        | GET|HEAD | user-profile/{id}                                      |                             | App\Http\Controllers\UserController@profile                            | web,auth       |
|        | GET|HEAD | user/create                                            | user.create                 | App\Http\Controllers\UserController@create                             | web,auth,admin |
|        | POST     | user/store                                             | user.store                  | App\Http\Controllers\UserController@store                              | web,auth,admin |
|        | GET|HEAD | user/{id}                                              |                             | App\Http\Controllers\UserController@show                               | web,auth,admin |
|        | DELETE   | user/{id}/destroy                                      | user.destroy                | App\Http\Controllers\UserController@destroy                            | web,auth       |
|        | GET|HEAD | user/{id}/edit                                         |                             | App\Http\Controllers\UserController@edit                               | web,auth       |
|        | PUT      | user/{id}/update                                       | user.update                 | App\Http\Controllers\UserController@update                             | web,auth       |
|        | PUT      | user/{id}/update_basic_info                            | user.update_basic_info      | App\Http\Controllers\UserController@update_basic_info                  | web,auth       |
|        | PUT      | user/{id}/update_contact_info                          | user.update_contact_info    | App\Http\Controllers\UserController@update_contact_info                | web,auth       |
|        | PUT      | user/{id}/update_cover_picture                         | user.update_cover_picture   | App\Http\Controllers\UserController@update_cover_picture               | web,auth       |
|        | PUT      | user/{id}/update_profile_picture                       | user.update_profile_picture | App\Http\Controllers\UserController@update_profile_picture             | web,auth       |
|        | PUT      | user/{id}/update_summary_info                          | user.update_summary_info    | App\Http\Controllers\UserController@update_summary_info                | web,auth       |
|        | GET|HEAD | visitor                                                |                             | App\Http\Controllers\VisitorController@index                           | web,auth,admin |
|        | DELETE   | visitor/truncate                                       | visitor.truncate            | App\Http\Controllers\VisitorController@truncate                        | web,auth,admin |
|        | GET|HEAD | visitor/{id}                                           |                             | App\Http\Controllers\VisitorController@show                            | web,auth,admin |
|        | GET|HEAD | wedding                                                |                             | App\Http\Controllers\WeddingController@index                           | web            |
|        | GET|HEAD | wedding/guest/api                                      |                             | App\Http\Controllers\WeddingController@api                             | web            |
|        | GET|HEAD | wedding/guest/{id}/note/display                        |                             | App\Http\Controllers\WeddingController@display                         | web            |
|        | GET|HEAD | wedding/guest/{id}/note/not_display                    |                             | App\Http\Controllers\WeddingController@notDisplay                      | web            |
|        | GET|HEAD | wedding/invite                                         |                             | App\Http\Controllers\WeddingController@invite                          | web            |
|        | GET|HEAD | wedding/mexico                                         |                             | App\Http\Controllers\WeddingController@mexico                          | web            |
|        | POST     | wedding/note                                           |                             | App\Http\Controllers\WeddingController@note                            | web            |
|        | POST     | wedding/rsvp                                           |                             | App\Http\Controllers\WeddingController@rsvp                            | web            |
|        | GET|HEAD | works                                                  |                             | App\Http\Controllers\ImageController@works                             | web            |
+--------+----------+--------------------------------------------------------+-----------------------------+------------------------------------------------------------------------+----------------+
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
2 944
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Использование жестко закодированных URL-адресов, таких как skill/store, в действии вашей формы всегда плохая идея, особенно в таких случаях, когда вы можете очень хорошо попасть по относительному URL-адресу.

Назовите свой маршрут:

Route::post('skill/store','SkillController@store')->name('skill.store');

... и измените действие вашей формы на

{!! Form::open(array('class' => 'form-horizontal', 'role' =>'form', 'route'=> 'skill.store' ,'files' => true, 'method' => 'POST' )) !!}

Редактировать: В качестве альтернативы вы также можете указать атрибут действия следующим образом:

{!! Form::open(array('class' => 'form-horizontal', 'role' =>'form', 'action'=> 'SkillController@store', 'files' => true )) !!}

Редактировать 2: Судя по вашему снимку экрана, для skill/store не определен маршрут GET. В вашем конкретном случае либо вам нужно определить этот маршрут, где он обычно показывает сообщение об успешном завершении, либо вы можете сделать это.

public function store(Request $request)
{
    // save the record

    return back()->with('success', 'The record has been saved successfully'); 
}

Это вернет вас к предыдущему маршруту, который существует, и вы также можете добавить сообщение об успехе в своем представлении.

Зачем нужен этот 'method' => 'POST'? Это должно быть по умолчанию с открытой формой.

code8888 07.02.2019 16:16

Понятно, я последовал совету одного из этих парней. Во всяком случае, я получил тот же результат с именем. " Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

code8888 07.02.2019 16:18

Интересный. Не могли бы вы добавить результат php artisan route:list к вашему вопросу?

Mozammil 07.02.2019 16:19

Кажется, вы также можете просто сделать route => 'name'. Не могли бы вы попробовать обновленный код?

Mozammil 07.02.2019 16:22

Вместо этого вы также можете указать атрибут action. Я также удалил method. Не могли бы вы попробовать обновленный код?

Mozammil 07.02.2019 16:27

давайте попробуем это сейчас.

code8888 07.02.2019 16:47

тот же результат в вашем последнем предложении Edit. ?

code8888 07.02.2019 16:48

Я потерялся. Я бы предложил php artisan route:clear на этом этапе и убедиться, что вы нажимаете правильный URL-адрес. Можете ли вы проверить на вкладке сети Chrome?

Mozammil 07.02.2019 16:49
php artisan route:clear та же ошибка. Что вы хотите узнать от Chrome?
code8888 07.02.2019 17:04

Судя по снимку экрана, у вас нет определения маршрута GET для skill/store. Можете показать код в SkillController@store?

Mozammil 07.02.2019 17:07

Отредактировал мой ответ. Проблема возникает из-за того, что вы перенаправляетесь на skill/store после отправки формы. Добавьте return back() в свой метод store(). Проверьте обновленный ответ.

Mozammil 07.02.2019 17:31

Когда вы вызываете класс Route::method, он принимает вызов только этим методом. Так что в вашем случае пост не работает. Сначала я бы отправил форму и метод запроса var_dump.

Я обновил свой пост, есть ли у вас какие-либо другие предложения, кроме var_dump?

code8888 07.02.2019 16:22

Я думаю, вы меня неправильно поняли. Вы должны опубликовать форму на другом PHP и запросить var_dump, чтобы увидеть, получен ли метод как сообщение. Возможно, laravel выполняет какую-то дезинфекцию или что-то в этом роде. Для html5 пост в нижнем регистре. Для проверки попробуйте следующее: Route::match(['get', 'post'], '/user', [ 'uses' => 'AppController@user', 'as' => 'useraccess', 'roles'= > 'HomeController@useroles', ]);

Marco 07.02.2019 16:57

понял, позвольте мне сделать dd(), чтобы увидеть, правильно ли я нахожусь в функции store().

code8888 07.02.2019 17:06

У меня была такая же ошибка. Для дальнейшей отладки я решил проверить переменную $Request в методе match (строка 157 в моем случае в файле ...\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php)

public function match(Request $request)
{
    $routes = $this->get($request->getMethod());
    dd($request);

В моем случае я понял, что метод был не POST, а PATCH...

Предупреждение: Кстати, будьте осторожны, если решите модифицировать какой-либо код в файлах фреймворка, коммит или бекап перед такими тестами - неплохая идея.

Надеюсь, это поможет.

Другие вопросы по теме