【问题标题】:Soft Deleting a row with laravel使用laravel软删除一行
【发布时间】:2014-08-16 19:20:49
【问题描述】:

我有一个 restful 用户控制器,其中列出了我的 index 方法上的所有用户,该列表显示在 HTML 表中。在单元格中的每一行内都有一个指向用户编辑页面的链接和一个用于软删除用户的链接。现在我已经设置好了,它会软删除用户,但是我正在尝试处理它,以便链接真正起作用。我曾经拥有的只是锚链接,但是在 laracasts 网站上观看 Restful Forms 视频后,我知道这是做不到的。 Jeff Way 将使用 Laravel 执行此操作的方式展示为必须以表格形式执行此操作。

有人可以向我建议如何做到这一点,我仍然能够通过分配给按钮和 i 元素的类来保持它看起来像我需要的样子吗?

当我点击我拥有的东西时,它会转到以下网址,这看起来很奇怪。

http://project.dev/users/{users}

我在用户控制器的销毁方法中也有一个 dd($user_id) 并且它不断出现 NULL。

<td>
    <a href="{{ URL::route('users.edit', $user->id) }}" class="btn btn-xs btn-primary"><i class="fa fa-pencil"></i></a>
    {{ Form::open(['method' => delete', 'route' => 'users.destroy', $user->id]) }}
        {{ Form::button()}}
        <a href="{{ URL::route('users.destroy', $user->id) }}" class="btn btn-xs btn-danger"><i class="fa fa-times"></i></a>
    {{ Form::close() }}
</td>

【问题讨论】:

    标签: php html laravel


    【解决方案1】:

    这样的事情会起作用吗?

    <td>
        <a href="{{ URL::route('users.edit', $user->id) }}" class="btn btn-xs btn-primary"><i class="fa fa-pencil"></i></a>
        {{ Form::open(['method' => delete', 'route' => ['users.destroy', $user->id]]) }}
            {{ Form::button('<i class="fa fa-times"></i>', ['type' => 'submit', 'class' => 'btn btn-xs btn-danger'])}}
        {{ Form::close() }}
    </td>
    

    我调整了route 参数以包含$user-&gt;id,并将&lt;i&gt; 插入Form::button() ... Laravel 没有逃脱Form::button() 的值,所以它不受干扰。

    【讨论】:

    • 效果很好,但是我试图弄清楚为什么删除按钮显示在编辑链接下方而不是在旁边。
    • 默认情况下,&lt;form&gt;s 是块元素。您可以修改它的样式以使其内联或内联块。这样做有点草率,但可能类似于:{{ Form::open(['method' =&gt; delete', 'route' =&gt; ['users.destroy', $user-&gt;id], 'style' =&gt; 'display:inline;']) }}
    • ... 或者添加一个类,并使用样式表显示:内联该类。
    • 作为一个班级我该怎么做。
    • {{ Form::open(['method' =&gt; delete', 'route' =&gt; ['users.destroy', $user-&gt;id], 'class' =&gt; 'delete-action']) }} ... 然后在你的样式表的某个地方.delete-action {display:inline;}
    【解决方案2】:

    您可以使用 javascript 进行 AJAX 调用。使用 jQuery 可能是这样的:

    (将 ajax-delete 类添加到 a 元素)

    $('a.ajax-delete').on('click', function() {
        $this = $(this);
        $.ajax({
            type: 'DELETE',
            url: $this.attr('src'),
            success: function() {
                //dynammicaly remove deleted element from DOM tree here
            }
        });
    });
    

    【讨论】:

    • 这是真的,但是我没有使用这种方法。
    • 如果您能重新评估并回复,我对我的帖子进行了一些更改,谢谢。
    猜你喜欢
    • 2015-04-07
    • 2017-06-02
    • 1970-01-01
    • 2015-05-12
    • 2016-05-13
    • 2016-03-05
    • 1970-01-01
    • 2018-06-18
    • 2014-04-20
    相关资源
    最近更新 更多