php - 在 View 中显示不必要的行

标签 php mysql laravel

我正在努力显示用户可以引用的访问权限表。

我有一张这样的 table

--------------------------------------------------------------
id  | header | module | submodule | add | edit | view | delete
--------------------------------------------------------------
 1  | users  | client |           | Y   | Y    | Y    | Y
 2  | users  | client | Active    | Y   | Y    | Y    | Y
 3  | users  | client | Inactive  | Y   | Y    | Y    | 
 4  | users  | client | Pending   | Y   | Y    |      | 

我正在寻找的输出是这样的

Header | Module | Submodule | Add | Edit | View | Delete
users  |        |           |     |      |      |
       | client |           | Y   | Y    | Y    | Y
       | client | Active    | Y   | Y    | Y    | Y
       | client | Inactive  | Y   | Y    | Y    | 
       | client | Pending   | Y   | Y    |      | 

但是我得到的输出是这样的

Header | Module | Submodule | Add | Edit | View | Delete
users  |        |           |     |      |      |
       | client |           | Y   | Y    | Y    | Y
       | client | Active    | Y   | Y    | Y    | Y
       | client |           | Y   | Y    | Y    |
       | client | Inactive  | Y   | Y    | Y    |
       | client |           | Y   | Y    |      |
       | client | Pending   | Y   | Y    |      | 

如何删除不需要的字段?

这是我当前在 Controller 上的代码

public function create() {
    $userGrid = DB::table('user_permissions_grid')
                   ->where('status', 'active')
                   ->orderBy('header', 'asc')
                   ->orderBy('module', 'asc')
                   ->orderBy('submodule', 'asc')
                   ->get();
}

然后在 View 上

<table class="table">
    <th>Header</th>
    <th>Module/th>
    <th>Submodule</th>
    <th>Add</th>
    <th>Edit</th>
    <th>Delete</th>
    <th>View</th>
    <tbody>
        @foreach($userGrid as $row)
        <tr>
            <td>{{ $row->header }}</td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>

        <tr>
            <td></td>
            <td>{{ $row->module }}</td>
            <td></td>
            <td>{{ $row->add }}</td>
            <td>{{ $row->edit }}</td>
            <td>{{ $row->view }}</td>
            <td>{{ $row->delete }}</td>
        </tr>
        @if($row->submodule)
        <tr>
            <td></td>
            <td></td>
            <td>{{ $row->submodule }}</td>
            <td>{{ $row->add }}</td>
            <td>{{ $row->edit }}</td>
            <td>{{ $row->view }}</td>
            <td>{{ $row->delete }}</td>
        </tr>
        @endif
        @endforeach
    </tbody>
</table>

如何将其显示到我上面发布的所需输出?

最佳答案

查看您的代码,它准确地显示了您编码的内容!

您首先显示一行仅包含标题,然后显示一行包含模块和权限,然后查看该模块是否有子模块,如果有,则再次打印同一行,这次缺失模块并仅显示子模块。

因此,如果一行有一个模块和一个子模块,您将得到两个对应的行。

我认为代码应该是这样的:

    @if($row->submodule)
    <tr>
        <td></td>
        <td>{{ $row->module }}</td>
        <td>{{ $row->submodule }}</td>
        <td>{{ $row->add }}</td>
        <td>{{ $row->edit }}</td>
        <td>{{ $row->view }}</td>
        <td>{{ $row->delete }}</td>
    </tr>
    @else
    <tr>
        <td></td>
        <td>{{ $row->module }}</td>
        <td></td>
        <td>{{ $row->add }}</td>
        <td>{{ $row->edit }}</td>
        <td>{{ $row->view }}</td>
        <td>{{ $row->delete }}</td>
    </tr>
    @endif

关于php - 在 View 中显示不必要的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55503626/

相关文章:

php - 拉拉维尔 4 : run multiple update query in 1 request

php - 我可以更改 $_SERVER ['DOCUMENT_ROOT' ] 的值吗?

PHP Exec Cron Job 返回意外的 EOF

MySql 错误 1064 - 恢复数据库

python - 通过获取 MySql 数组在 Python 中声明并填充数组

PHP 和 Mysqli OOP - 处理数据库

php - 如何将 HTML 插入 PHP DOM 对象?

php - Laravel 关系问题

php - Laravel 将右连接转换为左连接

javascript - 滚动时如何加载一个又一个 View /页面?