2016-04-09 5 views
1

У меня есть форма, и я пытаюсь обновить формы. В форме «имя» является уникальным полем (добавлено уникальное условие на странице запроса и в таблице, имя установлено как уникальное). когда я пытаюсь обновить форму (я предоставил значение, уже существует в таблице), он показывает ошибку «MethodNotAllowedHttpException в строке RouteCollection.php 219».Laravel 5.2: MethodNotAllowedHttpException в строке RouteCollection.php 219 - обновление форм

Если я обновляю «имя» с несуществующим именем, которое не находится в таблице, оно будет работать без каких-либо проблем.

Error

маршрутизатор

Route::group(['middleware' => ['superadmin']], function() { 
    Route::post('/sadmin/update_club',array('uses' => 'SAdmin\[email protected]', 'as' => 'updateClub')); 
} 

Запрос

class UpdateClubRequest extends Request 
{  
    public function authorize() 
    { 
     return true; 
    } 
    public function rules() 
    { 
    return [ 
     'name' => 'required|max:150|unique:clubs,name,'.Request::input('id'), 
     'logo' => 'image|mimes:jpeg,png,bmp,gif,svg|max:10000', 
     ]; 
    } 
} 

Макет страницы

{{ Form::open(array('route' => 'updateClub', 'method' => 'POST', 'class' => 'form-horizontal', 'files'=>true)) }} 

    {{ Form::hidden('id', $club[0]['id']) }} 
    {{ Form::text('name', $club[0]['name'], array('class' => 'form-control', 'maxlength' => 50)) }} 

{{ Form::close() }} 
+0

Я чувствую, что 'MethodNotAllowedHttpException' обычно связано с' posting' на маршрут 'get' или наоборот, что и показывает сообщение об ошибке. Вероятно, у вас есть маршрут 'get', определенный в том же месте _above_ ваш маршрут' post'? – camelCase

+0

@camelCase. да, у меня есть много пути ... Маршрут :: получить ('/ sadmin/Clubs', 'SAdmin \ ClubController @ Clubs'); Маршрут :: get ('/ sadmin/add_club', 'SAdmin \ ClubController @ addClub'); –

+0

Но любой из ''/sadmin/update_club''? – camelCase

ответ

2

Я не вижу никакой ошибки здесь, так это возможная ошибка может быть где-то е ЛСЭ. Например, я вижу, что вы используете superadmin для этого маршрута. Вы должны работать в консоли:

php artisan route:list 

, чтобы увидеть, что промежуточные программный применяются к updateClub имени маршрута и проверить это промежуточное программный код, потому что это возможно, что некоторые из них делают неправильное переназначение (метод GET по маршруту, который имеет только POST, например,).

Вторая вещь (это не вызывает проблем здесь, но вы должны следовать некоторым стандартам) - если вы создаете действие, которое что-то обновляет, вы должны использовать метод PUT (POST предназначен для создания новых объектов), поэтому в обоих маршрутах и ​​формах для этот маршрут вы должны изменить POST в PUT

EDIT

проблема может быть также немного по-другому. Предположим, у вас многоступенчатая форма (возможно, это ваш случай, потому что вы используете POST только для, поэтому вы используете следующие методы: GET (step1) -> POST (step2) -> POST (step3). в step2 вы получите сообщение об ошибке, запрос класса будет пытаться сделать перенаправление снова step2 но с методом GET, так что вы должны в routes.php позволяют также GET метод, так что в вашем случае, вероятно, следует изменить

Route::post('someroute' ... 

в:

Route::match(['get','post'], 'someroute' ... 

вы должны сделать это для страницы, на которой вы показываете эту форму

+0

На самом деле эта проблема существует, только если я добавляю имя, которое уже существует в таблице. если я изменяю запрос - «'name' => 'required | unique: clubs, name,'.Request :: input ('id') "to" 'name' => 'required' ", он будет работать –

+0

@LindoSebastian Пожалуйста, посмотрите мое редактирование –

+0

Я пробовал. Но он не работает ... :( –

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

  • Нет связанных вопросов^_^