我正试图编辑保存在我的数据库中的数据,我完全丢失了。
在我的PostController的索引,创建,存储和显示工作得很好,但在编辑和更新我失败了这么多。
错误文本
未定义变量:id(视图:C:laragonwwwlarablogresourcesviewsdashboardpostedit.blade.php)
PostController.php( dashboard app Http 控制器PostController.php
public function edit($id)
{
$post = Post::findOrFail($id);
return view ('dashboard.post.edit', ["post" => $post]);
}
public function update(Request $request, $id)
{
$post = Post::findOrFail($id);
$post::update($request->validated());
return back() -> with('status', '¡Post editado con éxito!');
}
edit.blade.php(资源 views dashboard edit.blade.php后
@extends('dashboard.master')
@section('content')
@include('dashboard.partials.validation-error')
<form action="{{ route("post.update", $post->$id) }}" method="PUT">
@csrf
<div class="form-group">
<label for="title">Título</label>
<input class="form-control" type="text" name="title" id="title" value="{{ old('title', $post->title) }}">
@error('title')
<small class="text-danger">
{{ $message }}
</small>
@enderror
</div>
<div class="form-group">
<label for="url_clean">Url limpia</label>
<input class="form-control" type="text" name="url_clean" id="url_clean" value="{{ old('content', $post->url_clean) }}">
</div>
<div class="form-group">
<label for="content">Contenido</label>
<textarea class="form-control" type="text" name="content" id="content" rows="3"> {{ old('content', $post->content) }} </textarea>
</div>
<input type="submit" class="btn btn-primary" value="Enviar">
</form>
@endsection
我不知道为什么会出现这个错误,我需要一点理论知识来理解。
谢谢大家!
p。d。我知道如果,在PostController中,我放了:
public function edit(Post $ Post)
public function update($Request $Request, Post $ Post)
我忍不住要写:
$post = post::findOrFail($id);
但我想这样写在我的第一步在laravel和期货id不叫"id">
正如注释所指出的,当你从$post传递参数时,你必须这样做
<form action="{{ route("post.update", $post->id) }}" method="POST">
@csrf
@method(“PUT”)
因为你没有id变量。除此之外,我强烈建议使用路由模型绑定,你传递整个模型,而不是id,因为它更干净,你不必在每个方法中调用findOrFail。更新时也使用
$post->update($request->validated());
因为这是调用update方法的正确方式,所以当你有Post模型而不是变量时使用::update。