CakePHP 3.3 подтверждает удаление записи с помощью SweetAlert

Я использую CakePHP 3.3, у меня есть список users, и я хочу отобразить подтверждение SweetAlert поле перед подтверждением отмены удаления конкретного пользователя.

Это фрагмент из src/Template/Users/index.ctp файла, который содержит список пользователей:

<tbody>
        <?php foreach ($users as $user): ?>
        <tr>
            <td><?= $this->Html->image('../'.$user->avatar, ['class' => 'img-avatar']); ?></td>
            <td><?= h($user->username) ?></td>
            <td><?= h($user->role) ?></td>
            <td><?= h($user->created) ?></td>
            <td><?= h($user->modified) ?></td>
            <td class="actions">
                <span class="label label-default"><?= $this->Html->link(__('View'), ['action' => 'view', $user->id]) ?></span>
                <span class="label label-default"><?= $this->Html->link(__('Edit'), ['action' => 'edit', $user->id]) ?></span>
                <span class="label label-default"><?= $this->Form->postLink(__('Delete'), ['action' => 'delete', $user->id], ['confirm' => __('Are you sure you want to delete # {0}?', $user->id)]) ?></span>
            </td>
        </tr>
        <?php endforeach; ?>
 </tbody>
 <button class="btn-del">DUMMY BUTTON</button>

Затем у меня есть скрипт в моем src/Template/Layout/default.ctp :

<script>
    document.querySelector('.btn-del').onclick = function(){
        swal({
                title: "Are you sure?",
                text: "You will not be able to recover this imaginary file!",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Yes, delete it!",
                closeOnConfirm: false
            },
            function(){
                swal("Deleted!", "Your imaginary file has been deleted.", "success");
            });
    };
</script>

Я попробовал скрипт, он работает с использованием Dummy Button, но я понятия не имею, как заставить его работать, чтобы он мог подтверждать или отменять удаление записи user с перенаправлением на index.ctp после каждого удаления.

Извините, я новичок в CakePHP и JS, и заранее спасибо.


person dwix    schedule 16.01.2017    source источник


Ответы (2)


Я решил это, используя концепции ниже:

HTML

<tr class="home-loan-table">
    <td><?= $this->Html->image($image, array('class' => 'profile-user-img img-responsive img-circle', 'width' => 100, 'height' => 100, 'alt' => 'User profile picture')) ?></td>
    <td><?= $testimonial->has('FromUser') ? $testimonial->FromUser->first_name : $testimonial->name ?></td>
    <td><?= $profile ?></td>
    <td><?= $testimonial->title ?></td>
    <!--<td><?= $testimonial->has('user') ? $this->Html->link($testimonial->user->id, ['controller' => 'Users', 'action' => 'view', $testimonial->user->id]) : '' ?></td>-->
    <td>
        <div class="table-wrap-elps">
            <?= ($testimonial->description) ?>
        </div>
    </td>
    <td><?= $this->Number->format($testimonial->rating) ?></td>
    <td class="actions text-center" style="white-space:nowrap">
        <?= $this->Html->link(__('View'), ['action' => 'view', $testimonial->id], ['class' => 'view-btn']) ?>
        <?= $this->Html->link(__('Edit'), ['action' => 'edit', $testimonial->id], ['class' => 'edit-icon']) ?>
        <?= $this->Form->postLink(__('Delete'), ['action' => 'delete', $testimonial->id], ['confirm' => __('Confirm to delete this entry?'), 'class' => 'crose-btn hide-postlink']) ?>
        <a href="javascript:;" class="crose-btn postlink-delete">Delete</a>
    </td>
</tr>

CSS

<style>
.hide-postlink{
    display: none;
}
.postlink-delete{
    display: inline-block;
}

script

<script>
$(document).on('click', '.postlink-delete', function () {
    var delete_form = $(this).parent().find('form');
    //add sweetalert here then form submit
    delete_form.submit();
});

person indradev    schedule 18.01.2018

index.ctp

<?= $this->Form->postLink(__('Delete'), ['action' => 'delete', $testimonial->id], ['class'=>'your_class','confirm' => __('Confirm to delete this entry?')]) ?>

скрипт

$(".your_class").attr("onclick", "").unbind("click"); //remove function onclick button

$(document).on('click', '.your_class', function () {
    let delete_form = $(this).parent().find('form');
    swal({
        title: "Você tem certeza?",
        text: "Uma vez excluído, você não poderá mais recuperar!",
        icon: "warning",
        buttons: true,
    }).then((willDelete) => {
            if (willDelete) {
                delete_form.submit();
            }
        });
});
person Pamela Maia    schedule 10.12.2019
comment
Пожалуйста, добавьте объяснение к вашему коду: что он делает, как он работает и как он решает проблему OP. Ответы только на код могут привести к программированию культа грузов, и вы рискуете получить отрицательные голоса. - person Max Vollmer; 10.12.2019