Laravel 5: не может POST маршрутизировать ресурс

У меня есть ресурс Route::resource('projects', 'ProjectsController'); и когда я запускаю route:list я вижу, что POST доступен.

 +--------+----------+--------------------------+------------------+--------------------------------------------------------------+-----------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+--------------------------+------------------+--------------------------------------------------------------+-----------------+ | | GET|HEAD | projects | projects.index | App\Http\Controllers\ProjectsController@index | auth | | | POST | projects | projects.store | App\Http\Controllers\ProjectsController@store | auth | | | GET|HEAD | projects/create | projects.create | App\Http\Controllers\ProjectsController@create | auth | | | GET|HEAD | projects/{projects} | projects.show | App\Http\Controllers\ProjectsController@show | auth | | | PUT | projects/{projects} | projects.update | App\Http\Controllers\ProjectsController@update | auth | | | PATCH | projects/{projects} | | App\Http\Controllers\ProjectsController@update | auth | | | DELETE | projects/{projects} | projects.destroy | App\Http\Controllers\ProjectsController@destroy | auth | | | GET|HEAD | projects/{projects}/edit | projects.edit | App\Http\Controllers\ProjectsController@edit | auth | +--------+----------+--------------------------+------------------+--------------------------------------------------------------+-----------------+ 

Когда я нахожусь в /projects/create (показывает свою форму) и нажимаю кнопку отправки, я получаю сообщение об ошибке:

 MethodNotAllowedHttpException in RouteCollection.php line 201: at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'PUT', 'PATCH', 'DELETE')) in RouteCollection.php line 188 

Возможно ли, что я определяю свой <form> ? Я не использую правильное действие?

<form method="post" action="">

Я также попробовал <form method="post" action="{{ url('projects/store') }}">

Извините, я noob to laravel!

Solutions Collecting From Web of "Laravel 5: не может POST маршрутизировать ресурс"

Вы должны быть POST на URL ресурса, а не ресурс / создать.

Другими словами, просто убедитесь, что действие вашей формы – action="/projects" not action="/projects/create"

Редактировать: я оставлю это здесь, потому что это очень актуально, и потому, что я изначально разместил его, но с предупреждением о том, что это излишний и много нерелевантного кода для кого-то, кто только начинает.

Например, вот фрагмент клика с одного из моих сайтов:

 @extends('layouts.master') @section('title', 'Create a Project') @section('content') <h3>Create a Project</h3> <hr/> {!! Form::open(['action'=>'ProjectController@store']) !!} @include('forms/partials/edit_form', ['submit_button_label' => 'Add Project']) {!! Form::close() !!} @include('errors.list') @endsection 

Laravel фактически использует method="POST" во всех тегах <form> .

Вам нужно следующее:

 <input type="hidden" name="_method" value="DELETE"> 

DELETE может быть заменен другими HTTP-глаголами (PUT, PATCH, UPDATE и т. Д.).

Я вижу, что с момента последнего ответа Laravel был обновлен. Во всяком случае, сегодня я столкнулся с той же проблемой, и вот как я ее исправил.

В принципе моя маршрутизация выглядит так:

 // Resourcing routes: https://laravel.com/docs/5.3/controllers#resource-controllers Route::resource('admin/photos', 'Admin\AdminPhotosController'); // need to do this to enable the store method on the following route (otherwise POST is on index when resourcing controllers) Route::any('admin/photos/create', 'Admin\AdminPhotosController@create'); Route::post('admin/photos/create', 'Admin\AdminPhotosController@store'); 

Надежда помогает кому-то.