Метод PUT выдает исключение BadMethodCallException - PullRequest
0 голосов
/ 27 января 2019

Я изучаю Laravel из Lacast и пытаюсь создать приложение CRUD. Я правильно реализовал index,show,create и store, но с формой edit, когда я пытаюсь представить данные, которые он выбрасываетBadMethodCallException.Вот мои маршруты

Route::get('/projects','ProjectsController@index');
Route::get('/projects/{id}','ProjectsController@show')->where('id','[0-9]+');


Route::get('/create','ProjectsController@create');
Route::post('/projects','ProjectsController@store');

Route::get('/projects/{id}/edit','ProjectsController@edit')->where('id','[0-9]+');
Route::put('/projects/{id}','ProjectsController@update')->where('id','[0-9]+');

Route::delete('/projects/{id}','ProjectsController@destroy');

Вот форма edit:

@extends('template');
@section('content')
    <h2>Create new project</h2>
<p>/projects/{{ $project->id }}</p>    
<form method="POST" action="/projects/{{ $project->id }}">
        {{ method_field('PUT') }}
        {{ csrf_field() }}
        <div>
            <input value="{{ $project->title }}" type="text" name="title" id="title" placeholder="Project title">
        </div>
        <div>
            <textarea  name="description" placeholder="Enter the project description">{{ $project->description }}</textarea>
        </div>
        <div>
            <button type="submit">Update project</button>
        </div>
    </form>
@endsection

Код контроллера:

 public function edit($id){
        $project= Project::find($id);
        return view('projects.edit',compact('project'));
    }

    public function update($id){
        $project= Project::find($id);
        $project->title=request('title');
        $project->description('description');
        $project->save();
        return redirect('/projects');
    }

edit form отображается как положенос данными, поступающими из базы данных, после отправки я получаю следующую страницу ошибки: enter image description here

На примере инструктора код работал отлично, и перед использованием PUTили в моей форме, и в моем контроллере я использовал PATCH как инструктор, но всегда тот же результат.

Вот ссылка на видео инструктора: Faking PATCH и DELETE Requests

1 Ответ

0 голосов
/ 27 января 2019

Ошибка довольно проста.

public function update($id){
    $project= Project::find($id);
    $project->title=request('title');
    $project->description('description'); // You don't have a method description()
    $project->save();
    return redirect('/projects');
}

Это то, что вы, вероятно, хотели сделать:

public function update($id)
{
    $project= Project::find($id);

    $project->title = request('title');
    $project->description = request('description');
    $project->save();

    return redirect('/projects');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...