Laravel删除确认

时间:2015-09-03 10:03:17

标签: php laravel

我尝试删除确认,使用控制器方法删除:

<img src="lowresImage.jpg" srcset="lowresImage.jpg, highresImage.jpg 2x" alt="Lorem Ipsum">

和相应的delete.blade.php:

function delete($id) { 
    $list = Todolist::find($id);
    return view('lists.delete')->with('list',$list);
}

然后还有一个控制器破坏方法

{!! Form::open(array('route' => array('lists.destroy', $list->id), 'method' => 'delete', 'class' => 'form')) !!}
<button type="submit" class="btn btn-sucess">Delete</button>
<button type="submit" onClick="history.back()">Cancel</button>
{!! Form::close() !!}

和confirmdelete.blade.php

function destroy($id) {
    $list = new Todolist;
    //$list->delete($id);
    echo 
    return view('lists.confirmdelete')\Redirect::route('lists.index')  
            ->with('message', 'Task deleted!');
        ////how to aply 5 second sleep for showing message 'Task deleted!'???
}

怎么做,它显示“任务已删除!”麻烦,例如5秒,然后两步回到索引动作?

3 个答案:

答案 0 :(得分:1)

在您的 destroy 方法中,您需要做一些小小的调整和还必须使用一点点js

destroy 方法更改为

function destroy($id) {
    $list = new Todolist;
    $data = [
      'name' => $list->name,
      'description' => $list->description,
    ];
    $list->delete($id);
    $data['message'] = 'Task deleted!';
    $data['redirectRoute'] = route('lists.index');

    return view('lists.confirmdelete', $data);
}

并在 confirmdelete.blade.php

<h1>{{ $name }}</h1>
<p>{{ $description }}</p>
<p><b>{{ $message }}</b></p>
<script>setTimeout(function(){ window.location.href = '{{ $redirectRoute }}' }, 5000);</script>

答案 1 :(得分:0)

会话变量最适合给定问题 尝试控制器方法

function destroy($id) {   

    //AFTER SUCCESS YOUR LOGIC
    Session::flash('message', 'Status Changed');
    Session::flash('alert-class', 'alert-success');
    return redirect('/index');
}

在刀片文件中,您可以像这个演示一样检查

@if(Session::has('message'))
<div class="alert {{ Session::get('alert-class') }} fade-in" id="alert">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
{{ Session::get('message') }}
</div>
@endif

会话flash最好在这里使用,一旦打印就会噗。并且你可以在5秒后淡出时使用JS。

<script>
    $("#alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#alert").slideUp(500);
});
</script>

答案 2 :(得分:0)

更容易:

<button class="btn btn-link" 
        onclick="return confirm('Are you sure you want to delete the record {{ $user->id }} ?')">
   DELETE
</button>

在这种情况下,如果要在单击之前删除记录,则打开带有确认的弹出窗口。很明显你需要把

$user = User::find($id);
如果你想在邮件中输入id,请在删除方法中