2016-08-28 3 views
1

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

Что я хочу сделать, прежде чем удалять категорию, открыть диалоговое окно приветствия и запросить подтверждение. Если это подтверждено, оно должно перейти к определенному маршруту и ​​удалить категорию.

ссылку Удалить определяется следующим образом:

<a id="delete-btn" href="{{ route('admin.categories.destroy', $category->id) }}" class="btn btn-danger">Delete</a>

и сценарий определяется следующим образом:

<script> 
    $(document).on('click', '#delete-btn', function(e) { 
     e.preventDefault(); 
     var link = $(this); 
     swal({ 
      title: "Confirm Delete", 
      text: "Are you sure to delete this category?", 
      type: "warning", 
      showCancelButton: true, 
      confirmButtonColor: "#DD6B55", 
      confirmButtonText: "Yes, delete it!", 
      closeOnConfirm: true 
     }, 
     function(isConfirm){ 
      if(isConfirm){ 
       window.location = link.attr('href'); 
      } 
      else{ 
       swal("cancelled","Category deletion Cancelled", "error"); 
      } 
     }); 
    }); 
</script> 

Однако, когда я нажимаю на кнопку удаления, он удаляет категорию, но сообщение сладкого предупреждения не появляется.

Маршрут определяется следующим образом:

Route::get('/categories/destroy/{category}', [ 
    'uses' => '[email protected]', 
    'as' => 'admin.categories.destroy', 
]); 

и функция управления определяется как:

public function destroy(Category $category) 
{ 

    $category->delete(); 

    //this alert is working fine. however, the confirmation alert should appear 
    //before this one, which doesn't 
    Alert::success('Category deleted successfully', 'Success')->persistent("Close"); 

    return redirect()->back(); 
} 

Любая помощь будет оценена. Благодарю.

ответ

2

Попробуйте это:

<script> 
    var deleter = { 

     linkSelector : "a#delete-btn", 

     init: function() { 
      $(this.linkSelector).on('click', {self:this}, this.handleClick); 
     }, 

     handleClick: function(event) { 
      event.preventDefault(); 

      var self = event.data.self; 
      var link = $(this); 

      swal({ 
       title: "Confirm Delete", 
       text: "Are you sure to delete this category?", 
       type: "warning", 
       showCancelButton: true, 
       confirmButtonColor: "#DD6B55", 
       confirmButtonText: "Yes, delete it!", 
       closeOnConfirm: true 
      }, 
      function(isConfirm){ 
       if(isConfirm){ 
        window.location = link.attr('href'); 
       } 
       else{ 
        swal("cancelled", "Category deletion Cancelled", "error"); 
       } 
      }); 

     }, 
    }; 

    deleter.init(); 
</script> 

EDIT: Ваш комментарий в ответ @ Калян-Singh-Rathore, я думаю, что вы не правильно инъекционного сценарий в шаблоне лезвия. Если вы расширяете базовый макет, убедитесь, что вы включили скрипт или дали его из дочернего макета.

+0

Работал! Большое спасибо. – byteseeker

0

Написать якорь внизу.

<a href="#" customParam="URL">Delete</a> 

Теперь в URL-адрес выберите change href to customParam.

function (isConfirm) { 
    if (isConfirm) { 
     window.location = link.attr('customParam'); 
    } else { 
     swal("cancelled", "Category deletion Cancelled", "error"); 
    } 
} 

В основном в вашем случае как href, так и event lisner находятся на клике.

+0

Не работает. На этот раз даже категории не удаляются. – byteseeker

+0

После отладки и проверки вызова в jquery event listener. –