Новичок в Laravel Удалить данные с помощью модального окна - PullRequest
0 голосов
/ 21 июня 2020

Мой модальный режим работает так хорошо и может удалять данные, но не точный идентификатор, который я выбрал для удаления, например, id: 1, 2, 3, 4, и я выберу id: 4, но id: 4 не удалит идентификатор удалено - это идентификатор: 1

это моя функция удаления внутри AllSystemController

public function deletestorydata($id)
{
    $story = Story::findOrFail($id);
    $story->delete();
    return redirect()->back()->with('success', 'Data has successfully deleted.');
}

, и это мой веб-маршрут. php в разделе истории

Route::get('stories/table', 'AllSystemController@indexstoriesdata')->name('stories.table');
Route::get('/stories/add', 'AllSystemController@createviewstories')->name('create.stories');
Route::post('/stories/storiesdata/submit', 'AllSystemController@submitstories')->name('submit.stories.data');
Route::get('/stories/view/{id}', 'AllSystemController@showviewstories')->name('view.story.data');
Route::get('/stories/edit/{id}', 'AllSystemController@editviewstories')->name('edit.stories');
Route::patch('/stories/{id}', 'AllSystemController@updatestorydata')->name('update.story.data');
Route::delete('/deletestory/{id}', 'AllSystemController@deletestorydata')->name('delete.story.data');

и это мой вид index_stories_data.blade. php

<table id="table-style-hover" class="table table-striped table-hover table-bordered nowrap">
<thead>
<tr>
    <th width="1%">Image</th> 
    <th>Title</th>
    <th>Flagship</th>
    <th>Category</th>
    <th>Author</th>
    <th class="text-center">Action</th>
</tr>
</thead>
<tbody>
@foreach($story as $row)
<tr>
    <td><img src="{{ asset('storage/stories_images')}}/{{$row->display_image}}" class="img-thumbnail" width="50"></td>
    <td>{{$row->title}}</td>
    <td>{{$row->is_flagship}}</td>
    <td>{{$row->category_name}}</td>
    <td>{{$row->name}}</td>
    <td>
    <div class="dropdown">
       <button class="btn btn-primary" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action&nbsp;<i class="fa fa-sort-desc" aria-hidden="true"></i></button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    <a style="color:black; font-weight: bold;" class="dropdown-item" href="{{url('/stories/view', $row->id)}}" target="_blank">View</a>
    <a style="color:black; font-weight: bold;" class="dropdown-item" href="{{url('/stories/edit', $row->id)}}" target="_blank" class="btn btn-primary">Edit</a>
    <a style="color:black; font-weight: bold;" class="dropdown-item" data-toggle="modal" data-target="#delete" href="">Delete</a>

  </div>
</div>

это мой модальный код и сценарий

<div class="modal fade modal-icon" id="delete" tabindex="-1" role="dialog" aria- 
labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">

<h4 class="modal-title" id="myModalLabel">Delete Confirmation</h4>
</div>
<form method="post" class="delete_form" action="{{url('/deletestory', $row->id)}}">
    {{csrf_field()}}
    <input type="hidden" name="_method" value="DELETE">
<div class="modal-body">
  <h4 class="text-center">Are you sure you want to delete it?</h4>
</div>

<div class="modal-footer">
<button type="button" class="btn btn-process" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-danger">Confirm</button>
</form>

</div>
</div>
</div>
</div>

<script>
  $(document).ready(function(){
    $('.delete_form').on('delete', function(){
      if(confirm("Are you sure you want to delete this data?"))
      {
        return true;
      }
      else
      {
        return false;
      }
    });
  });
</script>
@endforeach
</tbody>
</table>

, и я пытался dd ($ story); значение, пример id: 1, 2, 3, 4, и я выберу кнопку для удаления id: 3, а результат в dd будет id: 1 что-то не так с моей функцией? как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

У вас есть функция js для изменения идентификатора элемента в действии формы в соответствии с элементом, который вы хотите удалить? Если нет, ваш идентификатор всегда будет равен 1 или любому другому идентификатору первого объекта в ваших данных.

<form method="post" class="delete_form" action="{{url('/deletestory', $row->id)}}">
0 голосов
/ 21 июня 2020

Я редактирую ваш полный код, не используйте js в вашем foreach.

Попробуйте следующее:

<table id="table-style-hover" class="table table-striped table-hover table-bordered nowrap">

 <thead>
  <tr>
    <th width="1%">Image</th> 
    <th>Title</th>
    <th>Flagship</th>
    <th>Category</th>
    <th>Author</th>
    <th class="text-center">Action</th>
  </tr>
 </thead>

  <tbody>

  @foreach($story as $row)
    <tr>
      <td><img src="{{ asset('storage/stories_images')}}/{{$row->display_image}}" class="img-thumbnail" width="50"></td>
      <td>{{$row->title}}</td>
      <td>{{$row->is_flagship}}</td>
      <td>{{$row->category_name}}</td>
      <td>{{$row->name}}</td>
      <td>
        <div class="dropdown">
             <button class="btn btn-primary" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action&nbsp;<i class="fa fa-sort-desc" aria-hidden="true"></i></button>
          <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">

            <a style="color:black; font-weight: bold;" class="dropdown-item" href="{{ url('/stories/view', $row->id)}}" target="_blank">View</a>

            <a style="color:black; font-weight: bold;" class="dropdown-item" href="{{url('/stories/edit', $row->id)}}" target="_blank" class="btn btn-primary">Edit</a>
            <!-- Delete method -->
            <a href="#" style="color:black; font-weight: bold;" data-href="{{ url('/deletestory', $row->id) }}" class="btn btn-info btn-outline btn-circle btn-lg" data-toggle="modal" data-target="#myModal" title="Delete">Delete</a>

          </div>
        </div>
      </td>
    </tr>
 @endforeach

  </tbody>
</table>

<!-- Delete Modal -->
<div class="container">
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Delete !!!</h4>
        </div>
        <div class="modal-body text-center">
          <p class="my-0 font-weight-bold">Are you sure you want to delete this data???</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          <a class="btn btn-danger btn-ok">Delete</a>
        </div>
      </div>
    </div>
  </div>
</div>


<!-- Delete Modal JS -->
<script>
  $('#myModal').on('show.bs.modal', function(e) {
      $(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));
  });
</script>
...