Laravel 5.1 form::radio,无法从变量中获取 "false" 但是当我输入 false 时它起作用了

Laravel 5.1 form::radio, cant get "false" from variable but when I type false it works

这是我的代码

<div class="form-group">
{!! Form::label('', '*Role') !!}
@foreach ($roles as $role)
    <div class="radio">
        {!! Form::radio( 'role', $role->id, $user->getRolesCheckedAtrribute($user, $role), ['id' => $role->slug]) !!}
        {!! Form::label($role->slug, $role->name) !!}
        {!! $user->getRolesCheckedAtrribute($user, $role) !!}
    </div>
@endforeach

输出为:

<div class="form-group">
<label for="">*Role</label>
        <div class="radio">
                    <input id="super-admin" checked="checked" name="role" value="1" type="radio">
        <label for="super-admin">Super Admin</label>
        false
    </div>
        <div class="radio">
                    <input id="admin" checked="checked" name="role" value="2" type="radio">
        <label for="admin">Admin</label>
        true
    </div>
        <div class="radio">
                    <input id="basic-user" checked="checked" name="role" value="3" type="radio">
        <label for="basic-user">Basic User</label>
        false
    </div>
</div>

问题是我无法获得 $user->getRolesCheckedAtrribute() inside of Form::radio 的值,但在它之外它会正常回显。所以每个收音机都得到 checked="checked" 尽管只有第二个收音机有 true.

如果我将 Form::radio() 中的“$user->getRolesCheckedAtrribute($user, $role)”替换为 "false",那么 none 个按钮将被检查。

我正在使用 Laravel 5.1 并要求:

  "kodeine/laravel-acl": "~1.0@dev",
  "laravelcollective/html": "^5.1"

如果您需要更多详细信息,请询问。

更新:

 public function getRolesCheckedAtrribute($user, $role) {
    if (head($user->getRoles()) == $role->slug) {
        $checked = 'true';
    }
    else {
        $checked = 'false';
    }
    return $checked;
}

我的假设是正确的。

return 'true'return true 不同。此外,return 'false' 实际上会评估为真,这就是检查所有内容的原因。

使用 return truereturn false 应该可以解决您的问题。

如果因为其他地方使用此功能而无法执行此操作,您也可以执行...

`$user->getRolesCheckedAtrribute($user, $role) == 'true'`  

因此,如果您的函数 returns 'true',它将 return 为真,否则,它将正确计算为假。

这可能是您需要将函数更改为...

public function getRolesCheckedAtrribute($user, $role) {
    if (head($user->getRoles()) == $role->slug) {
        $checked = true;
    } else {
        $checked = false;
    }

    return $checked;
}