у меня есть маршрут
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

Как можно было бы отлаживать это дальше?
+--------+----------+--------------------------------------------------------+-----------------------------+------------------------------------------------------------------------+----------------+
| 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 |
+--------+----------+--------------------------------------------------------+-----------------------------+------------------------------------------------------------------------+----------------+






Использование жестко закодированных 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');
}
Это вернет вас к предыдущему маршруту, который существует, и вы также можете добавить сообщение об успехе в своем представлении.
Понятно, я последовал совету одного из этих парней. Во всяком случае, я получил тот же результат с именем. " Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
Интересный. Не могли бы вы добавить результат php artisan route:list к вашему вопросу?
Кажется, вы также можете просто сделать route => 'name'. Не могли бы вы попробовать обновленный код?
Вместо этого вы также можете указать атрибут action. Я также удалил method. Не могли бы вы попробовать обновленный код?
давайте попробуем это сейчас.
тот же результат в вашем последнем предложении Edit. ?
Я потерялся. Я бы предложил php artisan route:clear на этом этапе и убедиться, что вы нажимаете правильный URL-адрес. Можете ли вы проверить на вкладке сети Chrome?
php artisan route:clear та же ошибка. Что вы хотите узнать от Chrome?
Судя по снимку экрана, у вас нет определения маршрута GET для skill/store. Можете показать код в SkillController@store?
Отредактировал мой ответ. Проблема возникает из-за того, что вы перенаправляетесь на skill/store после отправки формы. Добавьте return back() в свой метод store(). Проверьте обновленный ответ.
Когда вы вызываете класс Route::method, он принимает вызов только этим методом. Так что в вашем случае пост не работает. Сначала я бы отправил форму и метод запроса var_dump.
Я обновил свой пост, есть ли у вас какие-либо другие предложения, кроме var_dump?
Я думаю, вы меня неправильно поняли. Вы должны опубликовать форму на другом PHP и запросить var_dump, чтобы увидеть, получен ли метод как сообщение. Возможно, laravel выполняет какую-то дезинфекцию или что-то в этом роде. Для html5 пост в нижнем регистре. Для проверки попробуйте следующее: Route::match(['get', 'post'], '/user', [ 'uses' => 'AppController@user', 'as' => 'useraccess', 'roles'= > 'HomeController@useroles', ]);
понял, позвольте мне сделать dd(), чтобы увидеть, правильно ли я нахожусь в функции store().
У меня была такая же ошибка. Для дальнейшей отладки я решил проверить переменную $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...
Предупреждение: Кстати, будьте осторожны, если решите модифицировать какой-либо код в файлах фреймворка, коммит или бекап перед такими тестами - неплохая идея.
Надеюсь, это поможет.
Зачем нужен этот
'method' => 'POST'? Это должно быть по умолчанию с открытой формой.