【问题标题】:How to make column data clickable with link in yajra datatable laravel 5.7如何使用 yajra 数据表 laravel 5.7 中的链接使列数据可点击
【发布时间】:2019-07-15 18:35:26
【问题描述】:

我正在尝试使链接到另一个视图的 ID 的行值可点击。这可以在前端使用来自 jQuery 的常规数据表来实现,例如:<td><h6><a href="/users/{{ $user->id }}">{{ $user->id }}</a></h6></td>。但是我该如何使用 yajra 呢?出于某种原因,yajrabox.com 最终无法加载,因此我无法阅读他们的文档。我也找不到相关的教程。这是我目前所拥有的。

用户控制器:

public function index()
{        
    return view('users.index');
}

public function yajraDT()
{
    return Datatables::of(User::query())->make(true);
}

index.blade.php:

<div class="container">
<h2>Laravel DataTables Tutorial Example</h2>
    <table class="table table-bordered" id="tableDT">
        <thead>
            <tr>
                <th class="text-left">Id</th>
                <th class="text-left">First Name</th>
                <th class="text-left">Last Name</th>
                <th class="text-left">Email</th>
                <th class="text-left">Gender</th>
                @if(Auth::check() && Auth::user()->type == "Admin")
                <th class="text-left">Actions</th>
                @endif
            </tr>
        </thead>
    </table>

<script>
     $(function() {
           $('#tableDT').DataTable({
           processing: true,
           serverSide: true,
           ajax: '{{ url('users/yajraDT') }}',
           columns: [
                    { data: 'id', name: 'id' },
                    { data: 'first_name', name: 'first_name' },
                    { data: 'last_name', name: 'last_name' },
                    { data: 'email', name: 'email' },
                    { data: 'gender', name: 'gender' }
                 ]
        });
     });
</script>

routes.web:

Route::get('users/yajraDT', 'UsersController@yajraDT');
Route::resource('users', 'UsersController');

【问题讨论】:

  • 所以你想像 那样将 RAW 列数据返回到刀片?对吗?
  • @ViperTecPro 是的,这是正确的,我想在列数据中返回一个 HTML 链接以使其可点击。

标签: jquery laravel datatables laravel-5.7 yajra-datatable


【解决方案1】:

您可以像这样将渲染函数传递给您的数据:

{ data: 'id', name: 'id', render:function(data, type, row){
    return "<a href='/users/"+ row.id +"'>" + row.id + "</a>"
}},

这会将所有&lt;td&gt; 包装在该锚标记中。不过,我想知道您是否会遇到 DataTable 自己的 ID 属性的问题。所以我不确定 row.id 是否会返回 your id 或 DataTables。如果您在 return 语句之前添加console.log(row),您应该找到可以在渲染函数中操作的对象,因此如果row.id 没有返回正确的 id,您应该能够在其中找到您需要的内容。

【讨论】:

  • 谢谢你我正在寻找的东西!
【解决方案2】:

您可以使用控制器中的 rawColumns api。检查这个:http://yajrabox.com/docs/laravel-datatables/master/raw-columns

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

【讨论】:

    猜你喜欢
    • 2019-07-17
    • 1970-01-01
    • 2019-05-08
    • 2020-11-27
    • 2021-08-08
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多