我正在使用laravel 8进行CRUD。我尝试在控制器中使用create和store函数,它很好,然后数据将存储在数据库中。现在,我尝试使用show函数,一旦用户点击“show”按钮,我创建的数据就会显示给用户。我发现的最大错误是未定义的$product
这是我的index.blade刀片
<a class="btn btn-info" href="show-index">Show</a>
这是我的show.blade.php刀片
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2> Show Product</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="pro_index"> Back</a
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Name:</strong>
{{ $product->name }}
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Details:</strong>
{{ $product->detail }}
</div>
</div>
</div>
这是我的ProductController.php
class ProductController extends Controller
{
public function index()
{
$products = Product::all();
return view('products.pro_index',compact('products'));
}
public function create()
{
return view('products.create');
{
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'detail' => 'required',
]);
$product= Product::create([
'name' => $request->name,
'detail' => $request->detail,
]);
return redirect('/pro_index') ->with('success','Your record has been updated');
}
public function show (Product $product)
{
$product = Product::find($product);
return view('products.show');
}
}
这是我的web.php
Route::get('/show-index', [App\Http\Controllers\ProductController::class, 'show'])->name('show');
发布于 2021-08-09 05:11:17
您不需要这行代码,因为您已经有了模型绑定
$product = Product::find($product);
发布于 2021-08-09 05:15:14
将锚点href从href="show-index"
更改为href="{{ route('show', $product) }}
在控制器中
public function show (Product $product)
{
return view('products.show', compact('product'));
}
在web.php中
Route::get('/show/{product}', [App\Http\Controllers\ProductController::class, 'show'])
->name('show');
更多信息:https://laravel.com/docs/8.x/routing#route-model-binding
https://stackoverflow.com/questions/68712600
复制相似问题