在 laravel nova 中创建动态数量的卡片

create dynamic number of cards in laravel nova

我尝试在我的仪表板中显示动态卡片数量,我该怎么做?在我的应用程序中,每个用户都有很少的帐户,我需要将帐户显示为卡片如何在 return 卡片数组中定义循环?

我尝试用 foreach 循环在数组中定义一个函数

public function cards(Request $request) {
  $accounts = $this-> getAccounts($request->user());
  return [
    function($accounts) {
      foreach($accounts as $account) {
        (new LinkableRouter)->title($account->currency()
             ->first()->symbol.' '.$account
             ->balance)
             ->url('{"name": "index", "params": {"resourceName": "accounts"}}')
             ->subtitle($account->acc);
      }
    }
  ];
}

调用未定义的方法Closure::authorize()

异常详情

Type Symfony\Component\Debug\Exception\FatalThrowableError Location C:\xampp4\htdocs\newgdi\vendor\laravel\framework\src\Illuminate\Support\HigherOrderCollectionProxy.php:60

在PHP中,给var赋值函数是Closure Object(doc).

当你在数组中定义 annonymos 函数时,你将他设置为 Closure 对象。所以基本上你的函数 returns 数组我们闭包对象(尝试 var_dump 他的 return 值你调用它你会看到。

假设此函数 return 帐户数组时出现该错误 - 但不,它 return 包含一个闭包元素的数组。

我相信你想把它改成这样(不确定,因为我不知道你的完整代码):

public function cards(Request $request) {
    $accounts = $this->getAccounts($request->user());
    foreach($accounts as $account) {
        $res[] = (new LinkableRouter)->title($account->currency()->first()->symbol . ' ' . $account->balance)
                    ->url('{"name": "index", "params": {"resourceName": "accounts"}}')
                    ->subtitle($account->acc);

    return $res;
}