放置请求上的 MethodNotAllowedHttpException 非常令人困惑 laravel
Very Confusing MethodNotAllowedHttpException on a put request laravel
到目前为止所有修改路由方法的尝试都失败了。
一直在关注有关 laravel restful 控制器的一些文档,并设置了一个控制器来进行基本编辑并将项目添加到数据库中。一切顺利,直到我遇到障碍......好吧,我不确定究竟是什么触发了这个问题,但基本上,一切正常,直到我在表格上点击提交,然后游戏结束。
通常我可以通过检查我是否使用了正确的调用或拼写错误或其他方式来诊断此问题。但这对我来说是一个新的要求,所以我无法完全调试问题出在哪里。
这就是那些知道要寻找什么的人的错误。完整 here。
MethodNotAllowedHttpException in RouteCollection.php line 218:
我的路线是pasted here。
路线的打印输出 is here:
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ContactFormRequest;
use App\UserEdit;
use DB;
use App\Http\Requests;
class EditUserController extends Controller
{
public function index()
{
$array = UserEdit::all()->toArray();
return view('UserEntry', compact('array'));
}
public function create()
{
$id = UserEdit::find(715)->toArray();
return view('NewUser', compact('id'));
}
public function store(UserFormRequest $request)
{
//$user = new UserEdit([
// 'name'=>$request->get('First_Name'),
// 'email'=>$request->get('email'),
// 'username'=>$request->get('name')
//]);
//
//$user->save();
//return \Redirect::route('users')->with('message', 'Nice Work.');
}
public function show($id)
{
try {
$array = UserEdit::findorFail($id)->toArray();
return view('UserEdit')->with('array', $array);
} catch(\Exception $e) {
return \Redirect::route('users.index')
->withMessage('This user does not exist');
}
}
public function edit($id)
{
$user = UserEdit::findorFail($id);
return view('EditUser')->with('user',$user);
}
public function update($id, UserFormRequest $request)
{
$user = UserEdit::findorFail($id);
$user->update([
'name' => $request->get('name'),
'email' => $request->get('email')
]);
return \Redirect::route('users.edit', [$user->id])->with('message', 'Details Updated!');
}
public function destroy($id)
{
//
}
}
刀锋is here.
我认为你在 form.try 这个
中使用模型
{{ Form::open(['method' => 'put', 'route'=>['users.update', $user->id], 'class'=>'form']) }}
根据你的路由列表和路由 put 不带 id 所以你得到方法未找到异常
PUT users/{user} App\Http\Controllers\EditUserController@update
不使用资源,只需为每种方法键入每个路由
Route::put('users/{user}', 'EditUserController @update');
如果您很难找到解决方案,最简单的解决方案是使用
Route::any('users/{user}', 'UserEntryController@update');
这允许您使用任何方法类型访问此操作
或者
Route::match(array('get', 'put'), 'users/{user}', 'UserEntryController@update');
所以你需要 2 种方法,它们是
获取 -> 查看
放 -> 提交更新
您可以在此操作中指明您希望使用哪种方法类型
看来理清路线后,问题落到了大写错误的问题上。 $user->id 应该是 $user->ID.
到目前为止所有修改路由方法的尝试都失败了。
一直在关注有关 laravel restful 控制器的一些文档,并设置了一个控制器来进行基本编辑并将项目添加到数据库中。一切顺利,直到我遇到障碍......好吧,我不确定究竟是什么触发了这个问题,但基本上,一切正常,直到我在表格上点击提交,然后游戏结束。
通常我可以通过检查我是否使用了正确的调用或拼写错误或其他方式来诊断此问题。但这对我来说是一个新的要求,所以我无法完全调试问题出在哪里。
这就是那些知道要寻找什么的人的错误。完整 here。
MethodNotAllowedHttpException in RouteCollection.php line 218:
我的路线是pasted here。 路线的打印输出 is here:
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ContactFormRequest;
use App\UserEdit;
use DB;
use App\Http\Requests;
class EditUserController extends Controller
{
public function index()
{
$array = UserEdit::all()->toArray();
return view('UserEntry', compact('array'));
}
public function create()
{
$id = UserEdit::find(715)->toArray();
return view('NewUser', compact('id'));
}
public function store(UserFormRequest $request)
{
//$user = new UserEdit([
// 'name'=>$request->get('First_Name'),
// 'email'=>$request->get('email'),
// 'username'=>$request->get('name')
//]);
//
//$user->save();
//return \Redirect::route('users')->with('message', 'Nice Work.');
}
public function show($id)
{
try {
$array = UserEdit::findorFail($id)->toArray();
return view('UserEdit')->with('array', $array);
} catch(\Exception $e) {
return \Redirect::route('users.index')
->withMessage('This user does not exist');
}
}
public function edit($id)
{
$user = UserEdit::findorFail($id);
return view('EditUser')->with('user',$user);
}
public function update($id, UserFormRequest $request)
{
$user = UserEdit::findorFail($id);
$user->update([
'name' => $request->get('name'),
'email' => $request->get('email')
]);
return \Redirect::route('users.edit', [$user->id])->with('message', 'Details Updated!');
}
public function destroy($id)
{
//
}
}
刀锋is here.
我认为你在 form.try 这个
中使用模型 {{ Form::open(['method' => 'put', 'route'=>['users.update', $user->id], 'class'=>'form']) }}
根据你的路由列表和路由 put 不带 id 所以你得到方法未找到异常
PUT users/{user} App\Http\Controllers\EditUserController@update
不使用资源,只需为每种方法键入每个路由
Route::put('users/{user}', 'EditUserController @update');
如果您很难找到解决方案,最简单的解决方案是使用
Route::any('users/{user}', 'UserEntryController@update');
这允许您使用任何方法类型访问此操作
或者
Route::match(array('get', 'put'), 'users/{user}', 'UserEntryController@update');
所以你需要 2 种方法,它们是
获取 -> 查看
放 -> 提交更新
您可以在此操作中指明您希望使用哪种方法类型
看来理清路线后,问题落到了大写错误的问题上。 $user->id 应该是 $user->ID.