2016-02-12 6 views
0

Я новичок в Laravel, я пытаюсь обновить запись в моей таблице пользователя, но я получаю это MethodNotAllowedHttpException, я пробовал все, но ничего не сработало.MethodNotAllowedHttpException в laravel 5 при вызове POST

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-адрес, к которому вы обращаетесь, когда получаете это исключение? И как вы получаете доступ к этому URL-адресу? – Bogdan

+0

Не могли бы вы показать форму, которая отправляет запрос? –

+0

Я получаю доступ к контроллеру из запроса ajax, я не упоминал об этом, потому что я попробовал его вручную, чтобы локализовать ошибку, я добавлю его –

ответ

0

Я установил ее :)

я addedd public $timestamps = false; в классе пользователей

и я deletet типа от ajax call

$.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

Да, это правильно, спасибо: 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

Почему вы используете этот запрос (Request $ request), сначала удалите это, и попробуйте эту строку $ inputData = \t Input :: all(); // Считывает все входные массивы –

+0

@VijaySaiChaudary Вызывается метод MethodNotAllowedHttpException, когда HTTP-глагол запроса (GET, POST, PUT и т. Д.) И URL-путь не соответствуют определению маршрута. Он не имеет ничего общего с пространством имен или использованием класса '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

Я хочу обновить запись пользователя, поэтому я не могу добавить создание, я думаю! –

Смежные вопросы