【问题标题】:MethodNotAllowedHttpException on resource defined method Laravel-4资源定义方法 Laravel-4 上的 MethodNotAllowedHttpException
【发布时间】:2014-08-19 00:30:10
【问题描述】:

我创建了一个非常简单的表单,以便我可以使用提交按钮而不是链接来打开编辑用户页面。使用链接可以正常工作,但表单按钮会失败并产生 MethodNotAllowedHttpException,即使方法(“编辑”)已在 UsersController 资源中完美定义并且可以正常工作。

路线:

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

用户控制器:

public function edit($id)
    {
        $user = $this->user->find($id);
        return View::make('users.edit')->with('user',$user);
    }

show.blade.php:

<!-- This works fine: -->
{{ link_to_route('users.edit', ("Edit: " .$user->first_name." ".$user->last_name), $user->id) }}

<!-- This doesn't work, and yields the Method Not Allowed exception: -->
{{ Form::open(array('route' => array('users.edit',$user->id))) }}
{{ Form::submit('Edit User', array('class'=>'button')) }}
{{ Form::close() }}

谢谢。

【问题讨论】:

  • 嗨,米奇,不——我在您的回复中添加了一条评论(如下),简要解释了为什么答案不起作用。更详细地说:问题不在于路由——我 am 试图转到用户/编辑页面,在那里我有更新用户的表单。 {{ Form::open... }} 不在编辑页面上,它只是在显示页面上。作为比较,表单正上方是一个链接,可以完美地转到用户/编辑页面。我只是想用表单替换那个链接,这样我就可以使用表单按钮而不是链接,我不明白为什么这不起作用。谢谢。
  • 好吧,您收到错误 Method Not Allowed Exception,因为您将 Form::open() 方法指向 users.edit,这是不允许的,因为您永远无法将表单提交到 users.edit 路由。我不确定您要完成什么,所以我无法进一步帮助您,但现在您知道为什么会收到错误了。
  • 我只是尝试使用表单进行路线导航,而不是使用链接。换句话说,一个人可以点击一个按钮而不是一个链接。我想我可以简单地使用图像来做同样的事情。但是为此目的使用表单非常适合普通的旧 PHP,所以我不明白为什么我不能用 Laravel 做到这一点。对不起,我不是想变得困难,我只是想弄清楚 Laravel。感谢您的帮助。

标签: php methods laravel-4


【解决方案1】:

当您执行Form::open() 时,默认使用post 请求方法。但是当你创建一个Route::resource() 时,edit 方法接受一个get 请求。

要使其通过表单工作,您需要使用附加参数打开它,如下所示:

{{ Form::open(array('route' => array('users.edit',$user->id),
   'method' => 'get')) }}

【讨论】:

    【解决方案2】:

    您需要指向更新路线,而不是编辑。

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

    edit route 用于显示视图,而 update 用于 put/patch 请求。

    有关使用 RESTful 路由的更多信息,我建议您查看http://laravel.com/docs/controllers#resource-controllers

    【讨论】:

    • 感谢您的回复,但是,不,我试图指向编辑路径,而不是更新根目录。我正在从打印有关用户的信息的页面(用户/显示)路由到允许编辑该用户的页面(用户/编辑),这与我在表单上方的链接中所做的完全相同。我把它们都放在那里进行比较——目标路线是一样的。
    猜你喜欢
    • 2015-11-18
    • 2014-08-16
    • 1970-01-01
    • 2013-07-04
    • 2013-09-18
    • 2018-07-03
    • 1970-01-01
    • 2016-05-02
    • 2014-09-16
    相关资源
    最近更新 更多