Удалить запись при нажатии нескольких флажков

Я хочу удалить запись, которая выбрана в флажке, а также удалить всю запись.

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

<button type="checkbox" id="checkall" class="btn btn-default btn-sm checkbox-toggle">
    <i class="fa fa-square-o" ></i>
</button>
<div class="btn-group">
    <button type="submit" class="btn btn-default btn-sm" >
        <i class="fa fa-trash-o"></i>
    </button>
</div>

<!-- /.btn-group -->
<a href="{{ route('home.notificationbox') }}">
    <button type="button" class="btn btn-default btn-sm">
        <i class="fa fa-refresh"></i>
    </button>
</a>

Это структура таблицы

<div class="table-responsive mailbox-messages">
    <table id="mailplan" class="table table-hover-row table-striped-row{{ count($admin_notifications) > 0 ? 'datatable' : '' }}" data-page-length="25">
        <tbody>
            @if (count($admin_notifications) > 0)

                <?php $count=1; ?>
                @foreach ($admin_notifications as $admin_notification)

                    @if($admin_notification['is_read'] == 1)            
                        <tr class="table-dark-row" data-entry-id="{{ $admin_notification['notification_id'] }}">
                            <td>
                                <a href="">{{ $count++ }}</a>
                            </td>
                            <td>
                                <input type="checkbox" class="checkbox" 
                                    onclick="delete_admin_notification({{ $admin_notification['notification_id'] }});"
                                    name = "deleteMultipleMail[]" 
                                    value = "{{ $admin_notification['notification_id' ]}}">
                            </td>
                            <td class="mailbox-name">
                                <a href="#" onclick="showInDetail('{{ $admin_notification['message_type'] }}','{{ $admin_notification['message_view_id'] }}','{{ $admin_notification['notification_msg_id'] }}')">
                                    {{ $admin_notification['message_from'] }}
                                </a>
                            </td>
                            <td class="mailbox-subject">
                                <b>{{ $admin_notification['title'] }}</b> - {{ $admin_notification['message'] }}
                            </td>
                            <td class="mailbox-date">
                                {{ $admin_notification['duration'] }}
                            </td>
                        </tr>
                    @else

                        <tr data-entry-id="{{ $admin_notification['notification_id'] }}">
                            <td>
                                <a href="">{{ $count++ }}</a>
                            </td>
                            <td>
                                <input type="checkbox" class="checkbox" 
                                    onclick = "delete_admin_notification({{ $admin_notification['notification_id']}});"
                                    value = "{{ $admin_notification['notification_id' ]}}">
                            </td>
                            <td class="mailbox-name">
                                <a href="#" onclick="showInDetail('{{ $admin_notification['message_type'] }}','{{ $admin_notification['message_view_id'] }}','{{ $admin_notification['notification_msg_id'] }}')">
                                    {{ $admin_notification['message_from'] }}
                                </a>
                            </td>
                            <td class="mailbox-subject">
                                <b>{{ $admin_notification['title'] }}</b> - {{ $admin_notification['message'] }}
                            </td>
                            <td class="mailbox-date">
                                {{ $admin_notification['duration'] }}
                            </td>
                        </tr>
                    @endif                                  
                @endforeach
            @else
                <tr>
                    <td colspan="12">No Subscription Plan Available</td>
                </tr>
            @endif                                  
        </tbody>

    </table>
    <!-- /.table -->
</div>

Вот сценарий

$(function () {

    $('#check_all').on('click', function(e) {

        if($(this).is(':checked',true)) {

            $(".checkbox").prop('checked', true);  
        } else { 
            $(".checkbox").prop('checked',false);  
        }
    });

    $('.checkbox').on('click',function() {

        if($('.checkbox:checked').length == $('.checkbox').length) {
            $('#check_all').prop('checked',true);
        } else {
            $('#check_all').prop('checked',false);
        }
    });

    $('.delete-all').on('click', function(e) {
        var idsArr = []; 
        var strIds = idsArr.join(","); 
        $.ajax({

            url: "/deleteMultipleMail",
            type: 'POST',
            headers: {'X-CSRF-TOKEN':token},
            data: 'ids='+strIds,
            success: function (data) {
                if(response['success']){
                window.location = response['redirect_url']; 
                } else {
                    alert('Whoops Something went wrong!!');
                }
            },
            error: function (data) {
                alert(data.responseText);
            }
        });
    });
});

Это удалено, контролер.

public function delete_admin_notification(Request $request)
{
    if(!empty($request)) {

        $adminNotification=AdminNotification::find($request['notification_id'])->delete();
        return redirect()->back();
    } else {
        return false;
    }   
}
public function deleteMultipleMail(Request $request)
{
    dd($request);
    $delId = $request->input('deleteMultipleMail');
    AdminNotification::whereIn('notification_id' , $delId)->delete();
    return redirect()->back();
}

Страница маршрута

Route::post('/deleteMultipleMail','HomeController@deleteMultipleMail');

Удалить все записи при установке флажка или те, которые выбраны только для удаления.

Он сбрасывает и умирает в первой строке deleteMultipleMail? Или вы не входите в эту функцию?

Wimanicesir 22.05.2019 13:11

Я просто обновляю столбец delete_at с помощью "->delete()", он просто обновляет столбец delete_at

Lav Narain Nishad 22.05.2019 13:13

Извините, я не понимаю, что вы говорите

Wimanicesir 22.05.2019 13:15

При установке флажка я не получил идентификатор для сохранения в var idsArr = []; var strIds = idsArr.join(",");

Lav Narain Nishad 22.05.2019 13:25

Да, это проблема, но мой вопрос в том, выполняет ли он dd() в первой строке deleteMultipleMail? Это да/нет вопрос

Wimanicesir 22.05.2019 14:01

Ну конечно; естественно..

Lav Narain Nishad 22.05.2019 15:06
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
0
6
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем js-файле:

$('.delete-all').on('click', function(e) {
    var idsArr = []; 

    $('.checkbox').each(function(){
        var isChecked = $(this).prop('checked');

        if(isChecked){
            idsArr.push($(this).val());
        }
    });

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    $.ajax({
        url: "/deleteMultipleMail",
        type: 'POST',
        data:{
            idsArr: idsArr
        },
        success: function (response) {
            if(response.success){
             window.location = response.redirect_url; 
            } else {
                alert('Whoops Something went wrong!!');
            }
        },
        error: function (data) {
            alert(data.responseText);
        }
    });
});

В вашем контроллере:

public function deleteMultipleMail(Request $request)
{
    $post = $request->all();

    AdminNotification::whereIn('notification_id' , $post['idsArr'])->delete();

    return response()->json(['success' => true, 'redirect_url' => 'your redirect url']);
}

Другие вопросы по теме