如何在Laravel中的控制器中的destroy方法内创建一个条件

时间:2017-05-29 05:50:36

标签: php jquery laravel-5

我有这个问题。 在我的仪表板中,我想为我的注册用户和管理员取消激活和激活帐户

这是我的控制器:

public function destroy($id)
{
   $getVal = Input::has('status');
    if($getVal === false) //if checkbox is set to false
    {
        $this->users->softDel($id);
    }
    else
    {
        //if checkbox is set to true
        $this->users->restoreDel($id);
    }
    return redirect('\users');
}

型号:

public function softDel($id)
{
     return User::where('id',$id)->delete();
}
public function restoreDel($id)
{
    return User::where('id',$id)->restore();
}

刀片:

{!! Form::open(['method' => 'DELETE' , 'route' => ['users.destroy',$data->id]]) !!}
    <!--checkbox-->
    {!! Form::checkbox('status',null,( $data->deleted_at != null ? false : true ),['data-toggle' => 'toggle', 'data-size' => 'small','data-on' => 'activate' , 'data-off' => 'deacticvate' , 'data-offstyle' => 'danger' , 'data-onstyle' => 'success', 'class' => 'status' , 'data-id' => ($data->id)]) !!}
    <!---->
{!! Form::close() !!}

这是我的ajax请求:

jQuery(function($){
   $('.status').on('change',function(){
      var currentToken = $('meta[name="csrf-token"]').attr('content');//getting the token
      var id = $(this).data('id');

        $.ajax({
          method: "DELETE",
          url: "/users/"+id,
          dataType: "json",
          data:  { _token: currentToken},
           success:function(response)
            {
                console.log(response);
            }

       });
    });
});

我只使用软删除删除/恢复任何帐户.. 我的控制器只会执行IF语句。 我不知道发生了什么。请帮忙:)谢谢

1 个答案:

答案 0 :(得分:1)

我建议你应该根据复选框选中/取消选中,从你的AJAX调用中传递status

$.ajax({
    method: "DELETE",
    url: "/users/"+id,
    dataType: "json",
    data:  { _token: currentToken,status:this.checked?1:0},
    success:function(response) {
         console.log(response);
    }
});

将控制器更改为

public function destroy($id)
{
    $getVal = Input::get('status'); //you will get 1 or 0 here
    if(!$getVal) { // if checkbox is unchecked, then status is 0
        $this->users->softDel($id);
    }
    else { // in case of 1
        //if checkbox is set to true
        $this->users->restoreDel($id);
    }
    return redirect('\users');
}