Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使用yajra datatables laravel 5.7中的laravel collectives输出可点击的删除按钮_Jquery_Laravel_Datatables_Laravel 5.7_Yajra Datatable - Fatal编程技术网

Jquery 如何使用yajra datatables laravel 5.7中的laravel collectives输出可点击的删除按钮

Jquery 如何使用yajra datatables laravel 5.7中的laravel collectives输出可点击的删除按钮,jquery,laravel,datatables,laravel-5.7,yajra-datatable,Jquery,Laravel,Datatables,Laravel 5.7,Yajra Datatable,我想使用laravel集合在yajra数据表的另一列上输出一个可点击的删除按钮。问题是它输出了一个原始html文本{!!Form::open([“action”=>[)UsersController@destroy“,28],“方法”=>“帖子”,“类”=>“向右拉”])!!{{{Form::hidden({u方法”,“删除”)}{{{Form::submit(“删除”,[“类”=>“btn-btn-danger”])}{{Form::close()“”,而不是单击删除按钮。我可以输出常规htm

我想使用laravel集合在yajra数据表的另一列上输出一个可点击的删除按钮。问题是它输出了一个原始html文本
{!!Form::open([“action”=>[)UsersController@destroy“,28],“方法”=>“帖子”,“类”=>“向右拉”])!!{{{Form::hidden({u方法”,“删除”)}{{{Form::submit(“删除”,[“类”=>“btn-btn-danger”])}{{Form::close()“”
,而不是单击删除按钮。我可以输出常规html标记,但我想使用laravel集合。即使我已经添加了
rawColumns()
函数,我也不明白为什么它不起作用

这是我的控制器:

public function yajraDT()
{
    $users = User::all();
    return Datatables::of($users)
    ->addColumn('delete', function ($users) {
            return '{!! Form::open(["action" => ["UsersController@destroy",'.$users->id.'], "method" => "POST", "class" => "pull-right"]) !!}
            {{ Form::hidden("_method", "DELETE") }}
            {{ Form::submit("Delete", ["class" => "btn btn-danger"]) }}
            {!! Form::close()!!}")';
    })
    ->rawColumns(['delete'])
    ->make(true);
}
以下是我的看法:

<script>
     $(function() {
           $('#tableDT').DataTable({
           processing: true,
           serverSide: true,
           ajax: '{{ url('users/yajraDT') }}',
           columns: [
                    { data: 'id', name: 'id', 
                        @if(Auth::check() && Auth::user()->type == "Admin")
                            render:function(data, type, row)
                            {
                                return "<a href='/users/"+ row.id +"'>" + row.id + "</a>"
                            }
                        @endif},
                    { data: 'first_name', name: 'first_name' },
                    { data: 'last_name', name: 'last_name' },
                    { data: 'email', name: 'email' },
                    { data: 'gender', name: 'gender' },
                    {data: 'delete', name: 'delete'}
                 ]
        });
     });
</script>

$(函数(){
$('#tableDT')。数据表({
处理:对,
服务器端:是的,
ajax:“{url('users/yajraDT')}}”,
栏目:[
{数据:'id',名称:'id',
@if(Auth::check()&&Auth::user()->type==“Admin”)
呈现:函数(数据、类型、行)
{
返回“”
}
@endif},
{数据:'first_name',name:'first_name'},
{数据:'last_name',name:'last_name'},
{数据:'email',名称:'email'},
{数据:'性别',名称:'性别'},
{数据:'delete',名称:'delete'}
]
});
});

我就是这样做的:

// in the controller

return Datatables::of($users)
    ->addColumn('delete', function ( $user ) {
        return view('user.delete', compact('user'))->render();
    })
    ->escapeColumns([])
    ->make();

然后您的
delete.blade.php

{!! Form::open(["action" => ["UsersController@destroy", $user->id], "method" => "POST", "class" => "pull-right"]) !!}
    {{ Form::hidden("_method", "DELETE") }}
    {{ Form::submit("Delete", ["class" => "btn btn-danger"]) }}
{!! Form::close()!!}
这样,控制器中就没有硬编码的HTML,并且可以在显示之前呈现HTML输出


另一个建议是将您的管理检查从JS代码移动到控制器中,您可以使用Datatable上的
editColumn
方法。

我认为laravel collective适用于blade,因此无需将其放在控制器上。简单地说:-

public function yajraDT()
{
    $users = User::all();
    return Datatables::of($users)
    ->addColumn('delete', function (User $users) {
            return '<a href="admin/user/'.$users->id.'></a>';
    })
    ->rawColumns(['delete'])
    ->make(true);
}

//ROUTE Start
Route::get('admin/user/delete/{id},'Users@destroy');
//ROUTE End

//Remove User
public function destroy($id){
 try{
      User::where('id',$id)->delete();
      return back()->with([
      'message'  => 'User removed successfully."
     ]);
    }catch(Exception $e){
       return back()->with([
          'message' => $e->getMesssage() 
       ]);
    }
  }
公共函数yajraDT()
{
$users=User::all();
返回数据表::of($users)
->addColumn('delete',函数(用户$users){
返回“”;
})
->rawColumns(['delete']))
->使(真实);
}
//路线起点
路由::get('admin/user/delete/{id},'Users@destroy');
//线路端
//删除用户
公共功能销毁($id){
试一试{
User::where('id',$id)->delete();
返回()([
'消息'=>'用户已成功删除。“
]);
}捕获(例外$e){
返回()([
'消息'=>$e->GetMessage()
]);
}
}

但这意味着它必须重定向到另一个页面,对吗?有没有办法不重定向到另一个页面?我希望它不重定向到另一个页面。此删除按钮是datatables中的另一列,而不是新页面中的另一列。它不会重定向,它将呈现需要在每个datatable行中输出的html。试试看。好的,谢谢。我一到家就试试。我试过了,但它输出的是原始html文本,而不是可单击的删除按钮。