覆盖复制列以仅显示具有特定角色的用户

时间:2019-06-22 15:52:17

标签: laravel voyager

我创建了 Bread ,用于使用带有关系列的voyager来显示所有用户,并且我希望此列仅显示具有管理员角色的用户。

我试图覆盖视图,但我认为错误的选择有帮助吗?

let bestilling = {
    btnUndersider1:      500,
    btnUndersider2:      750,
    btnUndersider3:     1500,
    btnUndersider4:     4500,
}

for (x=0; x<Object.keys(bestilling).length; x++) {
    e = document.createElement('span');
    e.innerText = Object.keys(bestilling)[x] + " - ";
    document.body.appendChild(e);

    e = document.createElement('input');
    e.value = bestilling[Object.keys(bestilling)[x]];
    document.body.appendChild(e);
    document.body.appendChild(document.createElement('br'));
}

我可以到达@if($row->field == 'lead_belongsto_user_relationship') @endif 视图中的列,但是我不知道如何编辑结果数组或如何覆盖查询。

它显示了所有我只想显示管理员列表的用户。

1 个答案:

答案 0 :(得分:0)

我终于使用自定义控制器做到了。 步骤: 首先创建新的控制器

php artisan make:controller LeadController

扩展Voyagers控制器

<?php

namespace App\Http\Controllers;

class LeadController extends \TCG\Voyager\Http\Controllers\VoyagerBaseController
{
    //...
}
?>

最后,您可以覆盖VoyagerBaseController

中的关系函数
        if($request->type == "lead_belongsto_user_relationship"){
            if ($search) {
                $total_count = app($options->model)->where($options->label, 'LIKE', '%'.$search.'%')->count();
                $relationshipOptions = app($options->model)->take($on_page)->skip($skip)
                    ->where($options->label, 'LIKE', '%'.$search.'%')->where("role_id",3)
                    ->get();
            } else {
                $total_count = app($options->model)->count();
                $relationshipOptions = app($options->model)->take($on_page)->skip($skip)->where("role_id",3)->get();
            }
        }

在这里我将其覆盖以仅选择role_id = 3的用户,您可以根据需要对其进行自定义。

  

之后,转到BREAD设置并填写控制器名称   在我的情况下,使用您的完全合格的班级名称   “ \ App \ Http \ Controllers \ LeadController”