2016-10-19 2 views
0

До сих пор все попытки изменить методы маршрутизации потерпели неудачу.Очень запутанный методNotAllowedHttpException по запросу запроса laravel

Последовала некоторая документация по остальным контроллерам laravel и настроена на базовое редактирование и добавление элементов в базу данных. Это было хорошо, пока я не попал в ловушку ... ну, я не уверен, что именно вызывает проблему, но в основном все работает, пока я не попал в форму, а потом это Game Over.

Как правило, я мог бы диагностировать это, проверяя, не пользуюсь ли я правильным вызовом или не произнесла орфографическую ошибку или что-то еще. Но это новый запрос для меня, поэтому я не могу отлаживать, откуда эта проблема.

Это ошибка тех, кто знает, что искать. В полном объеме here.

MethodNotAllowedHttpException in RouteCollection.php line 218: 

Мои маршруты pasted here. распечатку маршрутов is here:

Контроллер:

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

Лезвие is here.

ответ

0

Похоже, что после сортировки маршрутов проблема упала до плохой капитализации. $ user-> id должен быть $ user-> ID.

1

я думаю, что вы используете модель в form.try это

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

По вашему списку маршрутов и маршрут положил оленья кожа принимает идентификатор, так что вы получите метод не нашел исключение

PUT users/{user} App\Http\Controllers\[email protected] 

вместо использования resouce просто введите каждый маршрут для каждого метода

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

Да, у laravel есть привязка модели модели, которую я использую для предварительной заполнения данных. – Mugluck

+0

Однако это все равно генерирует ту же ошибку. – Mugluck

+0

Список ресурсов списка @show. Вы получаете использование маршрутов php artisan. – iCoders

1

, если вам трудно найти решение самым простым решением является использование

Route::any('users/{user}', '[email protected]'); 

это позволит вам получить доступ к этой акции с любым типом метода
ИЛИ

Route::match(array('get', 'put'), 'users/{user}', '[email protected]'); 

так что вам нужно 2 способа, которые являются

прибудете -> Вид
пут -> сообщить об обновлении

Вы можете указать, какой тип метода вы хотите быть доступным в этом действии

+0

Я попытался вручную настроить маршруты, которые обычно генерируются маршрутом ресурса, и отключил его. Все еще была та же проблема. Первое сообщение обновлено, чтобы отразить это. – Mugluck