Laravel 5.5更新帖子不起作用

Laravel 5.5更新帖子不起作用,laravel,Laravel,edit.blade.php: {!! Form::model($post, array('method'=>'PATCH','url'=>'/posts/{post}'.$post->id)) !!} {{ method_field('PATCH') }} {{csrf_field()}} Route::get('/', 'PostsController@index')->name('home'); Route::get('/posts/create', 'Po

edit.blade.php:

{!! Form::model($post, array('method'=>'PATCH','url'=>'/posts/{post}'.$post->id))  !!}

{{ method_field('PATCH') }}

{{csrf_field()}}
Route::get('/', 'PostsController@index')->name('home');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{post}', 'PostsController@show');
Route::get('/posts/tags/{tag}', 'TagsController@index');
Route::post('/posts/{post}/comments','CommentsController@store');
Route::get('/posts/{id}/edit', 'PostsController@edit');
Route::get('/edit/{post}', 'PostsController@update');
Route::patch('/post/{post}', 'PostsController@update');
Route::get('/register', 'RegistrationController@create');
Route::post('/register', 'RegistrationController@store');
Route::get('/login', 'SessionsController@create');
Route::post('/login', 'SessionsController@store');
Route::get('/logout', 'SessionsController@destroy');
Post::where('id', $post)->update($request->all());
Post::where('id', $post->id)->update($request->all());

后置控制器:

public function edit( Post $post )
{
    return view('posts.edit', compact('post'));
}


public function update(Request $request, Post $post)
{
    Post::where('id', $post)->update($request->all());

    return redirect('/home');
}
您正在此处使用,请将其更改为:

public function update(Request $request, Post $post){
    $post->update($request->all());
    return redirect('/home');
}
另外,将URL更改为:

'url' => '/posts/' . $post->id
另外,请删除这些字段,因为
{!!Form::model()!!}
会自动为您插入这些字段:

{{ method_field('PATCH') }}
{{ csrf_field() }}

更改:

{!! Form::model($post, array('method'=>'PATCH','url'=>'/posts/{post}'.$post->id))  !!}

{{ method_field('PATCH') }}

{{csrf_field()}}
Route::get('/', 'PostsController@index')->name('home');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{post}', 'PostsController@show');
Route::get('/posts/tags/{tag}', 'TagsController@index');
Route::post('/posts/{post}/comments','CommentsController@store');
Route::get('/posts/{id}/edit', 'PostsController@edit');
Route::get('/edit/{post}', 'PostsController@update');
Route::patch('/post/{post}', 'PostsController@update');
Route::get('/register', 'RegistrationController@create');
Route::post('/register', 'RegistrationController@store');
Route::get('/login', 'SessionsController@create');
Route::post('/login', 'SessionsController@store');
Route::get('/logout', 'SessionsController@destroy');
Post::where('id', $post)->update($request->all());
Post::where('id', $post->id)->update($request->all());
至:

{!! Form::model($post, array('method'=>'PATCH','url'=>'/posts/{post}'.$post->id))  !!}

{{ method_field('PATCH') }}

{{csrf_field()}}
Route::get('/', 'PostsController@index')->name('home');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{post}', 'PostsController@show');
Route::get('/posts/tags/{tag}', 'TagsController@index');
Route::post('/posts/{post}/comments','CommentsController@store');
Route::get('/posts/{id}/edit', 'PostsController@edit');
Route::get('/edit/{post}', 'PostsController@update');
Route::patch('/post/{post}', 'PostsController@update');
Route::get('/register', 'RegistrationController@create');
Route::post('/register', 'RegistrationController@store');
Route::get('/login', 'SessionsController@create');
Route::post('/login', 'SessionsController@store');
Route::get('/logout', 'SessionsController@destroy');
Post::where('id', $post)->update($request->all());
Post::where('id', $post->id)->update($request->all());

新路线:

{!! Form::model($post, array('method'=>'PATCH','url'=>'/posts/{post}'.$post->id))  !!}

{{ method_field('PATCH') }}

{{csrf_field()}}
Route::get('/', 'PostsController@index')->name('home');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{post}', 'PostsController@show');
Route::get('/posts/tags/{tag}', 'TagsController@index');
Route::post('/posts/{post}/comments','CommentsController@store');
Route::get('/posts/{id}/edit', 'PostsController@edit');
Route::get('/edit/{post}', 'PostsController@update');
Route::patch('/post/{post}', 'PostsController@update');
Route::get('/register', 'RegistrationController@create');
Route::post('/register', 'RegistrationController@store');
Route::get('/login', 'SessionsController@create');
Route::post('/login', 'SessionsController@store');
Route::get('/logout', 'SessionsController@destroy');
Post::where('id', $post)->update($request->all());
Post::where('id', $post->id)->update($request->all());
路由::patch('/posts/{id}/edit/{post}','UpdateController@update');

{!!Form::model($post,array('method'=>'post','url'=>'/posts/{id}/edit'.$post->id))


我认为/posts/{id}/edit不起作用了

好了,现在可以了。。但是不要更新帖子,只要创建一个新的post@Matteo你还没问过这件事。如果您还想创建一个新的帖子(如果它还不存在),请使用其他方法或
updateOrCreate()
方法。我已经创建了一个帖子,我只想能够重新编辑和更新一个帖子post@Matteo但它无法创建新的帖子。如果您使用的是如我所示的
update()
方法和
PostsController@update
方法已执行。我知道,但它会创建一个新帖子