Метод удаления Laravel на продуктах не работает

У меня есть представление, в котором я показываю все продукты из моей базы данных, в этом представлении я могу просматривать редактирование и удаление каждого продукта.

Функция удаления не работает должным образом прямо сейчас:

Вид выглядит так:

@foreach($products as $productKey => $productValue)
<tr>
<td>{{ $productValue->id }}</td>
<td>{{ $productValue->title }}</td>
<td>

@if($productValue->dr)
<a href="{{ route('editProduct', $productValue->id) }}" title="edit product"></a>
<form action="{{ route('destroyProduct') }}" method="post" name="delete_product_form">
<input type="hidden" name="_method" value="delete">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="hidden" name="id" value="{{ $productValue->id }}">
<a href="#" title="delete" data-form="delete_product_form" data-action="submit"></a>
</form>
...
@endif

</td>
</tr>
@endforeach

И мой метод уничтожения выглядит так:

public function destroyProduct(Request $request)
{
$productID = $request->get('id');
$product   = Product::find($productID);

$deleteFolder  = "folderpath...";

if(is_dir($deleteFolder))
{
if(Helper::removeDirRecursive($deleteFolder))
{
if($product)
{
$product->delete();
return redirect()->route('indexProduct')->with('message', 'Success');
}
else
{
return redirect()->route('indexProduct')->with('message', 'Error');
}
}
}
elseif($product)
{
$product->delete();
return redirect()->route('indexProduct')->with('message', 'Success');
}
return redirect()->route('indexProduct')->with('message', 'Error');
}

На данный момент он просто удаляет новейший продукт, если я повторяю

$product

Я всегда получаю новейший продукт.

Как мне изменить свою функцию, чтобы удалить продукт, который я выбрал правильно.

РЕДАКТИРОВАТЬ:

Я попробовал это, но все равно не сработало:

<form action="{{ route('destroyProduct', $productValue->id) }}" method="post" name="delete_product_form">

РЕДАКТИРОВАТЬ:

МОЯ функция отправки javascript:

observerSubmitButton: function() {
$('.observeSubmit').on('click', function() {
action   = $(this).data('action');
formName = $(this).data('form');

if(action == 'submit')
{
$('form[name="'+formName+'"]').submit();
}

});
},

0

Решение

изменить это:

@if($productValue->dr)
<a href="{{ route('editProduct', $productValue->id) }}" title="edit product"></a>
<form action="{{ route('destroyProduct') }}" method="post" name="delete_product_form">
<input type="hidden" name="_method" value="delete">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="hidden" name="id" value="{{ $productValue->id }}">
<a href="#" title="delete" data-form="delete_product_form" data-action="submit"></a>
</form>
...
@endif

к этому

@if($productValue->dr)
<a href="{{ route('editProduct', $productValue->id) }}" title="edit product"></a>
<form action="{{ route('destroyProduct') }}" method="post">
<input type="hidden" name="_method" value="delete">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="hidden" name="id" value="{{ $productValue->id }}">
<button type="submit">Delete</button>
</form>
...
@endif

Или вы можете иметь счетчик

<?php $count=0; ?>
@foreach($products as $productKey => $productValue)
<tr>
<td>{{ $productValue->id }}</td>
<td>{{ $productValue->title }}</td>
<td>

@if($productValue->dr)
<a href="{{ route('editProduct', $productValue->id) }}" title="edit product"></a>
<form action="{{ route('destroyProduct') }}" method="post" name="delete_product_form{{$count}}">
<input type="hidden" name="_method" value="delete">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="hidden" name="id" value="{{ $productValue->id }}">
<a href="#" title="delete" data-form="delete_product_form{{$count++}}" data-action="submit"></a>
</form>
...
@endif

</td>
</tr>
@endforeach
2

Другие решения

использование

$product=Product::find($id)

или же

 $product=Product::where('id',$id)

найти продукт
затем

 $product->delete();

удалить это

0

По вопросам рекламы [email protected]