调用 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!!!!");
}
感谢您的帮助:)
我是 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!!!!");
}
感谢您的帮助:)