2016-07-19 10 views
0

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

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

View выглядит следующим образом:

@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 

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

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

EDIT:

Я попытался это, но до сих пор не работает:

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

EDIT:

МОЯ Javascript представить функции:

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

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

    }); 
}, 
+0

При входе PRODUCTID после строки, где вы создаете его, что получение возвращается? –

+0

Строка с последним идентификатором '' 55 "' – utdev

+0

Oh. nvm Я неправильно понял, я думал, что это проблема, захватывающая идентификатор, но идентификатор, который вы хотите, не должен быть 55, это правильно? –

ответ

2

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

@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 
+0

спасибо, но не работает, по-прежнему удаляет последнюю запись – utdev

+0

Я думаю, что идентификатор, переданный контроллеру, является идентификатором последней записи, что-то делать, а не перенаправлять() do 'return response() -> json ($ productID) ; 'и проверить, является ли id тем же самым идентификатором, который вы нажали в своей таблице/форме. – theMohammedA

+0

I 'dd ($ productID)' и он остается последним – utdev

0

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

$product=Product::find($id) 

или

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

, чтобы найти продукт
затем

$product->delete(); 

, чтобы удалить его

+0

мне нужно что-то добавить ?, потому что он не работает. – utdev