【问题标题】:Laravel Auth ReturnLaravel 身份验证返回
【发布时间】:2021-01-01 18:17:27
【问题描述】:

我在用户模型中创建了一个函数来返回权限并返回为 obj。但是当我输入 {{ Auth::user()->permission()->outlineAgreements }} 时,它说“htmlspecialchars() 期望参数 1 是字符串,给定对象”。我该如何解决?

PS:里面的测试值是一个数组

"{"outlineAgreements":["view"],"purchaseOrder":["view"],"pwra":["view","create","update","delete"]}"

public function permission()
{
    $permissions = auth()->user()->getAllPermissions()->pluck('name');

    foreach ($permissions as $key => $value) {
        $module          = last(explode(" ", $value));
        $action          = current(explode(" ", $value));
        $result[$module] = $result[$module] ?? [];
        array_push($result[$module], $action);
    }

    return json_decode(json_encode($result));
}

【问题讨论】:

  • 你到底想输出什么?
  • 我想输入“Auth::user()->permission()->outlineAgreements” 可以输出和数组是['view', 'update', delete]
  • 这是您的错误吗? stackoverflow.com/questions/43217872/…

标签: laravel


【解决方案1】:

Php 抱怨对象打印。它期望您指示它打印的数据是string

使用dd打印出权限方法的返回进行调试。这样您就可以更清楚地看到要打印的数据。

{{ dd(Auth::user()->permission()) }}
{{ dd(Auth::user()->permission()->outlineAgreements) }}

如果您的第一个框表示该有效负载数据,并且您需要访问和打印所有outlineAgreements 权限,并且它是一个数组,您可以使用implode

{{ implode(', ', Auth::user()->permission()->outlineAgreements) }}

您也可以遍历该数组:

@foreach(Auth::user()->permission()->outlineAgreements as $permission)
    {{ $permission }} 
@endforeach

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2018-01-05
    • 2017-04-24
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多