非常令人困惑的方法notallowedhttpexception在放请求laravel


Very Confusing MethodNotAllowedHttpException on a put request laravel

到目前为止,所有修改路由方法的尝试都失败了。

一直在遵循一些关于laravel restful控制器的文档,并设置了一个来进行基本的编辑和向数据库添加项。在我遇到问题之前,一切都很顺利。我不确定到底是什么触发了这个问题,但基本上,一切都正常,直到我点击提交表单,然后游戏结束。

通常我可以通过检查我是否使用了正确的调用来诊断这个问题,或者犯了拼写错误或其他什么。但是这对我来说是一个新的请求,所以我不能很好地调试问题是从哪里来的。

这是那些知道要寻找什么的人的错误。这里是全文。

MethodNotAllowedHttpException in RouteCollection.php line 218:

我的路由粘贴在这里。路由的打印输出如下:

控制器:

<?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)
    {
        //
    }
}

刀锋来了

如果你很难找到解决方法,最简单的方法就是使用

Route::any('users/{user}', 'UserEntryController@update');

this允许您使用任何方法类型
访问此操作。或者

Route::match(array('get', 'put'), 'users/{user}', 'UserEntryController@update');
所以你需要两个方法分别是

Get -> view
Put -> submit update

你可以指明你想在这个动作中使用的方法类型

我认为你在形式上使用了模型。试试这个

 {{ Form::open(['method' => 'put',  'route'=>['users.update', $user->id], 'class'=>'form']) }}

根据你的路由列表和路由放置不带id,所以你得到方法not found exception

PUT users/{user}    App'Http'Controllers'EditUserController@update

而不是使用资源,只是为每个方法键入每个路由

Route::put('users/{user}', 'EditUserController @update');

似乎在理清路线之后,问题落在了资本不良上。$user->id应该是$user->id

相关文章:
  • 没有找到相关文章