将角色类型传递给 Laratrust 表单数据库变量

问题描述 投票:0回答:1

我正在使用 Laratrust 和 laravel 根据角色显示数据库中的记录。每条记录都有一个角色类型字段(下表示例)。

在我的刀片视图中,我想将它们显示为代码(变量称为

$types
)。

<select name="type" id="" class="form-control">
    @foreach ($types as $type)
        @role($type->role)
        <option value="{{ $type->id }}">
            {{ $type->name }} {{ $type->role }}
        </option>
        @endrole
    @endforeach
</select>

什么也没显示。我的数据是正确的。我尝试手动编写角色类型,并且成功了。如果我将

@role()
留空,则会显示错误,因此这不是变量传递之前解释的角色的问题。任何帮助将不胜感激。

laravel laravel-blade laratrust
1个回答
0
投票

问题可能是因为 Laratrust 的

@role
指令需要字符串文字作为其参数,并且它可能无法正确解释变量
$type->role

此问题的解决方法是使用 Laratrust 提供的

hasRole
方法。此方法可以在经过身份验证的用户实例上使用,它接受角色名称作为字符串,该字符串可以是变量。

<select name="type" id="" class="form-control">
    @foreach ($types as $type)
        @if(auth()->user()->hasRole($type->role))
            <option value="{{ $type->id }}">
                {{ $type->name }} {{ $type->role }}
            </option>
        @endif
    @endforeach
</select>

在此代码中,

auth()->user()->hasRole($type->role)
检查经过身份验证的用户是否具有
$type->role
中指定的角色。如果用户具有该角色,则会显示该选项。

© www.soinside.com 2019 - 2024. All rights reserved.