2016-02-12 158 views
0

我是Laravel的新手,我试图更新我的用户表中的记录,但是我得到这个MethodNotAllowedHttpException,我尝试了一切,但都没有成功。在调用POST时laravel 5中的MethodNotAllowedHttpException

UsersController:

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('[email protected]'); 
    } 
} 

route.php

Route::get('/admin/users', '[email protected]'); 
Route::post('/admin/users/block', '[email protected]'); 

直到$user->blocked = 1;一切都很好。

UPDATE 我是从这个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) 

请帮我我堆积!

+0

当您得到该异常时,您访问的URL是什么?你如何访问该网址? – Bogdan

+0

您能否请求显示发送请求的表单? –

+0

我正在从ajax请求访问控制器,我没有提到它,因为我尝试手动将本地化错误,我会添加它 –

回答

0

我固定它:)

我的用户类

addedd public $timestamps = false; 我从deletet类型阿贾克斯电话

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

Thanx为您提供帮助:)

+0

如果时间戳导致你的问题,那么你不应该做'Route :: any'。你的代码现在只是对更新发出GET请求,这实际上并不好,这也意味着'/ admin/users/block'路由不能做任何其他事情。你可能应该在将'public $ timestamps = false;'添加到你的模型中而没有其他问题。 –

+0

是的,这是正确的,thanx:D –

0

而不是使用下面两行:

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('[email protected]'); 

     } 
    } 
+0

我得到相同的结果 –

+0

为什么你使用这个(请求$请求),首先删除这一个和 试试这条线 $ inputData = \t Input :: all(); //读取所有输入数组 –

+0

@VijaySaiChaudary当请求的HTTP动词(GET,POST,PUT等)和URL路径与路由定义不匹配时,会抛出'MethodNotAllowedHttpException'。它与'Request'类的命名空间或用法无关。 – Bogdan

1

如果你想更新你有使用PATCH考虑那个和你的方法

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

     return redirect()->action('[email protected]'); 
    } 

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

public function block(Request $request) 
     { 
      $input = $request->all(); 
      $input['blocked'] = 1; 
      User::create($input); 
      return redirect()->action('[email protected]'); 
     } 
+0

我想更新用户记录,所以我不能添加做创建我认为! –

相关问题