使用模态确认删除时表的id值为null时如何处理错误?

Posted

技术标签:

【中文标题】使用模态确认删除时表的id值为null时如何处理错误?【英文标题】:How to handle error when id value of table is null when using Modal confirm delete? 【发布时间】:2021-05-27 01:23:30 【问题描述】:

所以我有模态来确认删除操作,但是当表格数据为空/没有任何数据时,因为我没有要调用的 id 而出现错误?但如果我有超过 1 个数据,我的删除模式代码可以完美运行。当我删除表中的最后一个数据时会发生错误。

我已经尝试过了:

错误信息是:

Undefined variable $listproduct on --> index.blade.php)

Possible typo $listproduct
Did you mean $listproducts?

我的循环函数是 @foreach($listproducts as $listproduct)

这是我的按钮:

<td>
    <a href="#" class="btn btn-danger delete"
        data-toggle="modal"
        data-target="#deleteModal"
        productid="$listproduct->id"> Delete
    </a>
</td>

这是我的模态:

    <!-- Delete Warning Modal -->
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="Delete" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Delete Contact</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <form action=" route('products.destroy', $listproduct->id ) " method="post">
                @csrf
                @method('DELETE')
                <div class="modal-body">
                    <label for="id">
                        <input id="id" name="productid">
                    </label>
                    <h5 class="text-center">Are you sure you want to delete this contact?</h5>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                    <button type="submit" class="btn btn-sm btn-danger">Yes, Delete Contact</button>
                </div>
            </form>
        </div>
    </div>
</div>
<!-- End Delete Modal -->

这是我获取 ID 的脚本(我在编写此代码时使用它:

<form action=" url('delete', 'id' ) " method="post">

but still not works

) :

$(document).on('click','.delete',function()
        let id = $(this).attr('productid');
        $('#id').val(id);
    );

这是我的产品控制器:

public function destroy($id): RedirectResponse

    $deleteads = Product::findOrFail($id);
    $deleteads->delete();
    return redirect('products');

这是我的路线(我正在使用资源):

Route::group(['middleware' => ['auth']], function() 
***Route::resource('products', ProductController::class);***
Route::delete('/selected-products', [ProductController::class, 'deleteSelectedItem'])->name('products.deleteSelected');

);

【问题讨论】:

【参考方案1】:

首先,您不能在 html 中使用自己的 productid 属性,因此您应该使用 data 属性来保存您的信息。 其次,您在模态中的表单没有更新其操作属性,因此只有一个产品 ID 保留在操作属性中。

尝试先在操作中添加#,然后当单击要删除的项目时,使用 JQuery 更新表单的操作并输入正确的 URL 和产品 ID。

您的 ID 应保存在数据属性中,如下所示:

<td>
    <a href="#" class="btn btn-danger delete"
        data-toggle="modal"
        data-target="#deleteModal"
        data-productid="$listproduct->id"> Delete
    </a>
</td>

模态中的表单:

<form action="#" method="post" id="delete_product_form">
    @csrf
    @method('DELETE')
    <div class="modal-body">
        <label for="id">
            <input id="id" name="productid">
        </label>
        <h5 class="text-center">Are you sure you want to delete this contact?</h5>
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
        <button type="submit" class="btn btn-sm btn-danger">Yes, Delete Contact</button>
    </div>
</form>

处理表单动作属性更新的jQuery代码:

$(document).on('click','.delete',function()
    let id = $(this).data('productid');
    $('#delete_product_form').attr('action', '/products/' + id);
);

【讨论】:

我的荣幸。请考虑将答案标记为已接受的答案。

以上是关于使用模态确认删除时表的id值为null时如何处理错误?的主要内容,如果未能解决你的问题,请参考以下文章

在UWP应用程序中使用TreeView时如何处理命名空间冲突

向左滑动时如何处理UITableViewCell删除按钮动画?

使用 Spring ChannelAwareMessageListener 时如何处理 RabbitMQ 消费者取消通知

在 log4j2 jdbcapender 中设置日期时如何处理 null?

插入时表的 Hasura 权限被拒绝

使用 sum 函数时如何处理 Store 中的空值