2017-01-08 2 views
0

I litteraly начал использовать Laravel в первый раз 3 часа назад, и я пытаюсь создать базовую золотую книгу, где люди могут писать хорошие вещи о ресторане.МетодNotAllowedHttpException on submit

Итак, я создал свой контроллер с командой php artisan make:controller GoldenbookController --resource, затем моя модель с командой php artisan make:model Goldenbook -m. В процессе миграции я просто добавил «имя» и «сообщение» перед переносом. Я также добавил resource внутри routes/web.php файла

После создания вида и формы, я попробовал и получил следующее сообщение об ошибке:

MethodNotAllowedHttpException in RouteCollection.php line 218 

Я видел много людей, имеющих эту проблему, но путь решить это не соответствует моему делу, так как я использую Route::resource, чтобы рассказать Laravel мой CRUD.

Вот мой GoldenBookController.php

/** 
* Show the form for creating a new resource. 
* 
* @return \Illuminate\Http\Response 
*/ 
public function create() 
{ 
    return view('goldenbook.create'); 

} 

/** 
* Store a newly created resource in storage. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\Response 
*/ 
public function store(Request $request) 
{ 
    $validator = Validator::make($request->all(), [ 
     'nom' => 'required', 
     'message' => 'required' 
    ]); 


    if($validator->fails()){ 
     return redirect('/') 
      ->withInput() 
      ->withErrors($validator); 
    } 

    $goldenbook = new Goldenbook; 
    $goldenbook->nom = $request->name; 
    $goldenbook->message = $request->message; 
    $goldenbook->save(); 

    return redirect()->back(); 
} 

Вот моя форма

{!! Form::open(['url' => 'goldenbook/create']) !!} 

<div class="form-group"> 
    {{ Form::label('name', 'Name') }} 
    {{ Form::text('name', null, ['class' => 'form-control']) }} 
</div> 

<div class="form-group"> 
    {{ Form::label('message', 'Message') }} 
    {{ Form::textarea('message', null, ['class' => 'form-control']) }} 
</div> 

{{ Form::submit('Save', null,['class' => 'btn btn-primary']) }} 

{!! Form::close() !!} 

А вот мой файл маршрут, web.php

Route::resource('goldenbook', 'GoldenbookController'); 

Любая идея?

Спасибо заранее

+0

'Route :: resource ('livre-dor', 'GoldenbookController');' должен быть 'Route :: resource ('goldenbook', 'GoldenbookController');' – IzzEps

+0

Это опечатка, я пробовал несколько вещей раньше попросив еще немного помочь здесь, но изменение «livre-dor» для goldenbook ничего не изменило – Jaeger

+0

Я вижу. Другое дело: '{!!Форма :: open (['url' => 'goldenbook/create']) !!} 'должно быть просто' {!! Форма :: open (['url' => 'goldenbook']) !!} ', поскольку контроллер маршрута автоматически вызывается функцией' store' для POST для этого ресурса. (Https://laravel.com/docs/5.3/controllers) – IzzEps

ответ

0

У вас есть проблема в маршрутах в обоих web.php и вашей form.

Ваш web.php должен есть слово goldenbook

Route::resource('goldenbook', 'GoldenbookController'); 

И ваша форма должна иметь маршруты, как goldenbook/store или goldenbook

{!! Form::open(['url' => 'goldenbook/store']) !!} 

Или вы можете также передать название маршрута тоже.

{!! Form::open(['url' => 'goldenbook.store']) !!}] 

Это должно решить вашу проблему.

Если вы хотите узнать имя вашего маршрута и с помощью Laravel 5.* можно использовать

php artisan route:list 

, чтобы проверить, соответствует ли ваш URL на маршрут или нет.

Ошибка при проезде по маршруту POST. Это должно решить вашу проблему.