【问题标题】:Attempt to update users table generates MethodNotAllowedHttpException, Laravel-4尝试更新用户表生成 MethodNotAllowedHttpException,Laravel-4
【发布时间】:2014-06-25 03:00:50
【问题描述】:

用户控制器:

public function update($id)
    {
        if( ! $this->user->isValid(Input::all()))
             {
                 return Redirect::back()->withInput()->withErrors($this->user->errors);
             }

        $user = $this->user->find($id);

        $user->save();

        return Redirect::route('users.index');
    }

路线:

Route::resource('users','UsersController');

型号:

protected $table = 'users'

edit.blade.php:

{{ Form::model($user, array('route'=>array('users.update','$user'=>'id'))) }}

我注意到这不会生成“PUT”操作。页面来源:

    <form method="POST" action="https://zocios.com/users/id" accept-charset="UTF-8"><input name="_token" type="hidden" value="...">

点击更新用户按钮让我:

Exception \ MethodNotAllowedHttpException

问题是“$user->save();”吗?还有什么我做错了吗?谢谢!

【问题讨论】:

    标签: php forms laravel-4


    【解决方案1】:

    你需要指定方法:

    {{ Form::model($user, array('method' => 'put', 'route'=>array('users.update','$user'=>'id'))) }}
    

    除了GETPOST 之外,没有其他方法被接受(尽管有规范),因此框架会识别表单_method 中的隐藏输入以使其工作。

    【讨论】:

    • 谢谢!这样可行。但是随后弹出一个我以前从未见过的新错误:“从空值创建默认对象”。它似乎是指密码字段,但我当然是在输入密码。如果我将其留空,它只会重新加载表单,但是当我包含它时,我会收到错误消息。用于初始条目时它工作正常,但更新失败。 (抱歉我的回复延迟;我不得不离线几天。)
    • 我怀疑它来自密码。在这里试试$this-&gt;user-&gt;find() - 你确定你注射了$this-&gt;user 吗?
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 2013-07-04
    • 2013-09-18
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多