9

形式 :

{{ Form::open(array('url' => 'user/create', 'files' => true)) }}

路线 :

Route::resource('user', 'UserController');

用户控制器.php

  class UserController extends BaseController {

    public function index()
    {
        return 'hi11';
        //return View::make('home.index');
    }
    public function create()
    {
        return 'hi22';
        //return View::make('home.index');
    }

}

这段代码给出
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

4

4 回答 4

12

我只是想在这些方面添加我自己的发现......也许这会让其他人免于我刚刚执行的令人头疼的事情。

我也实现了 Route::resource 机制。我无法弄清楚为什么我的创建工作正常,但我的更新却没有。事实证明,您不能完全重用相同的表单代码,执行更新的表单必须使用 PUT 或 PATCH 方法。为什么更新不能是 POST 超出了我的范围。

也就是说,更新的开始表单标签必须如下所示:

Form::model($thing, array(
    'method' => 'PUT', 
    'route' => array('things.update', $thing->id)
    )

如果不指定方法 => PUT,您会收到这个无用的错误。

于 2013-11-24T06:12:07.353 回答
3

因为在您的路线中您使用资源控制器,所以您只能使用特定的路径和操作,如文档http://laravel.com/docs/controllers#resource-controllers中所述。

user/create ( UserController::create ) 是您需要显示添加新用户的表单的地方。

用户的实际存储应该在用户/存储中完成,即您的表单必须将数据发送到 UserController::store() 方法。

在您的情况下,如果您仅将表单发布到“url”=>“用户”,这应该会自动将数据发送到正确的方法。

于 2013-07-19T12:22:01.800 回答
2

Laravel 4 资源已命名路由- 只需使用这些:

{{ Form::open(array('route' => 'user.create', 'files' => true)) }}
于 2013-07-07T02:52:34.530 回答
0

这就是我的做法,它可能对某人有所帮助,可以改进,但这将是主要思想。

@if(isset($data))
    {{ Form::open(['route'=>['blog.update', isset($data) ? $data->slug : null],'method' => 'patch','role' => 'form', 'class' => 'blog-form form-horizontal']) }}
@else
    {{ Form::open(['route'=>'blog.store','role' => 'form', 'class' => 'blog-form form-horizontal']) }}
@endif
于 2015-01-26T06:57:16.920 回答