Php 拉威尔5号:Can';t发送到路由资源

Php 拉威尔5号:Can';t发送到路由资源,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个路由资源route::resource('projects','projectscoontroller')'ProjectController@store']) !!} @包括('forms/partials/edit_form',['submit_button_label'=>'Add Project'])) {!!Form::close()!!} @包括('errors.list') @端部 Laravel实际上在所有标记中使用了method=“POST” 您需要的是以下内容: &l

我有一个路由资源
route::resource('projects','projectscoontroller')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
这可能是我定义
标记的方式吗?我是否使用了正确的操作

我也试过


对不起,我是拉威尔的不速之客

您应该发布到资源url,而不是资源/创建

换句话说,只需确保表单的操作是
action=“/projects”
而不是
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
@extends('layouts.master'))
@节(“标题”、“创建项目”)
@节(“内容”)
创建项目

{!!Form::open(['action'=>'ProjectController@store']) !!} @包括('forms/partials/edit_form',['submit_button_label'=>'Add Project'])) {!!Form::close()!!} @包括('errors.list') @端部
Laravel实际上在所有
标记中使用了
method=“POST”

您需要的是以下内容:

<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');

希望这对其他人有所帮助。

无论是谁投票结束了我的问题,因为它是离题的,请解释您的路线只指定
GET
HEAD
方法作为
/projects/create
允许的方法,但您使用的是
POST
方法提交表单。调整您的路由文件以接受
POST
。我现在明白了,谢谢@Zerp指出,我的行动需要简单地指向
/projects
,以便我存储您当然可以以任何您想要的方式解决问题,但底线是引发了异常,因为您使用的方法在routes文件中没有定义。啊,就是这样!我可能也应该开始以这种方式创建表单,而不是HTML。谢谢你,泽普。我会在5分钟内接受你的回答。谢谢。如果你想了解更多,我会推荐laracasts.com上的“Laravel 5基础知识”系列。事实上,几个月前,当我有一些休息时间时,我就看过了所有这些。实际上,我现在正在一个实际项目中使用L5,所以我应该注意复习。避免Laravel 5中表单常见缺陷的最佳方法是使用
FormBuilder
(),正如Zerp已经建议的那样。是的,我刚把它安装在我的投影仪上,你可以使用表单助手,它可以为你做所有这些。你能详细说明一下,如果我想在数据库中存储一些东西,为什么我需要删除吗?你没有。只是语法的一个例子。我想你可能对如何设置方法感到困惑。重新阅读这个问题,我认为这个答案是毫无意义的。明白了,我现在使用的是form builder,所以设置方法非常简单。无论如何谢谢你