我使用资源控制器通过将一个集合传递给视图来删除行中的记录。
查看:
<tbody>
@php $count=1; @endphp
@forelse ($products as $product)
<tr>
<td>{{ $count }}</td>
<td>{{ $product->name }}</td>
<td>{{ $product->slug }}</td>
<td>{{ $product->updated_at }}</td>
<td><span class="label label-success">Published</span></td>
<td>
<div class="btn-group">
<a href="/products/{{ $product->slug }}" class="btn btn-default btn-xs">View</a>
<a href="/account/edit-product-{{ $product->slug }}" class="btn btn-warning btn-xs">Edit</a>
<a href="{{ route('products.destroy', $product->slug) }}" class="btn btn-danger btn-xs" onclick="event.preventDefault();document.getElementById('delete-product').submit();">Delete</a>
<form id="delete-product" method="POST" action="{{ route('products.destroy', $product->slug) }}" style="display: none;">
@csrf
@method('DELETE')
</form>
</div>
</td>
</tr>
@php $count++; @endphp
@empty
<tr>
<td colspan="6">No products yet.</td>
</tr>
@endforelse
</tbody>
控制器:
public function products()
{
$products = Product::orderBy('created_at', 'desc')->paginate(10);
return view('vendor.products')->with('products', $products);
}
public function destroy(Product $product)
{
$product->delete();
return redirect('/account/products')->with('success', 'Product deleted successfully.');
}
当我点击任何&#34;删除&#34;按钮,它删除最后一篇文章(数据库中的第一篇文章,因为它按降序排序)。
有人能告诉我哪里错了吗?我认为最初代码工作得很好,直到我做了一些其他的修改,并且它是&#34;神奇地&#34;没有按预期工作。
编辑: 路线:
Route::prefix('/account')->group(function () {
Route::get('/products', 'AccountController@products');
Route::get('/corporate-info', 'AccountController@corporateInfo');
Route::get('/add-product', 'ProductController@create');
Route::get('/edit-product-{product}', 'ProductController@edit');
});
Route::resource('products', 'ProductController');
产品型号:
public function getRouteKeyName()
{
return 'slug';
}
答案 0 :(得分:1)
哦,这是你的问题:
Piecewise((x + 4.3, x + 4.3 < 12.9), (x/5 + 11.18, x/5 + 11.18 <= 13.5))
每当您
时循环,您都会为每个表单提供相同的ID“delete-product”的document.getElementById( '删除副产物')提交();
它获取并提交带有删除产品ID的表单,这是由于最重要的问题解决您的问题而导致的最后一个:
<a href="{{ route('products.destroy', $product->slug) }}" class="btn btn-danger btn-xs" onclick="event.preventDefault();document.getElementById('delete-product').submit();">Delete</a>
<form id="delete-product" method="POST" action="{{ route('products.destroy', $product->slug) }}" style="display: none;">
@csrf
@method('DELETE')
</form>