调用 POST 时 laravel 5 中的 MethodNotAllowedHttpException

MethodNotAllowedHttpException in laravel 5 when calling POST

我是 Laravel 的新手,我正在尝试更新我的用户 table 中的记录,但我得到了这个 MethodNotAllowedHttpException,我已经尝试了所有方法,但没有成功成功了。

用户控制器:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Users;

class UsersController extends Controller
{
    public function index()
    {
        $users = Users::all();
        return view('admin.users',compact('users'));
    }

    public function block(Request $request)
    {
        $user = Users::find($request->id);
        $user->blocked = 1;
        $user->save();

        return redirect()->action('UsersController@index'); 
    }
}

route.php

Route::get('/admin/users', 'UsersController@index');
Route::post('/admin/users/block',  'UsersController@block');

直到 $user->blocked = 1; 一切顺利。

更新 我正在通过此 jQuery 方法

访问控制器
$("#valdiate-user-block").click(function(){
    var data = {
        id: 2
    }
    $.ajax({
        url: "block",
        type:"POST",
        data: data,
        success:function(data){
            alert(data);
        },error:function(){ 
            alert("error!!!!");
        }
    }); //end of ajax
    });

我没有提到它是因为我定位了错误,当我从根目录访问控制器时我得到了错误,当我从 jQuery 访问它时我得到了

POST http://localhost:1303/admin/users/block 500 (Internal Server Error)

请帮助我,我堆积了!!

而不是使用以下两行:

use Illuminate\Http\Request;
use App\Http\Requests; // seems this one also incorrect to me (Requests?)(Request !)

只需在下面使用并检查:

use Request;

您的更新代码将是:

    namespace App\Http\Controllers;
    use Request;
    use App\Http\Controllers\Controller;
    use App\Users;
    use Illuminate\Support\Facades\Input;

    class UsersController extends Controller
    {
        public function index(){
            $users = Users::all();
            return view('admin.users',compact('users'));
        }

        public function block(){

            $inputData = Input::all(); // Reads all input array
            $your_id=   $inputData['id'];
            $user->blocked = 1;
            $user->save();

            return redirect()->action('UsersController@index');

        }
    }

如果你想更新你必须使用 PATCH 考虑一下并在你的方法中

public function block(User $user, Request $request)
    {
        $input = $request->all();
        $input['blocked'] = 1;
        $user->update($input);

        return redirect()->action('UsersController@index'); 
    }

如果你想使用 POST 然后这样做

public function block(Request $request)
        {
            $input = $request->all();
            $input['blocked'] = 1;
            User::create( $input );
            return redirect()->action('UsersController@index'); 
        }

我修好了:)

我添加了public $timestamps = false; 在用户 class

并且我从 ajax 调用中删除了类型

$.ajax({
url: "users/block/",
data: data,
success:function(data){
alert(data);
},error:function(){ 
alert("error!!!!");
}

感谢您的帮助:)