【发布时间】: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。感谢您的帮助。