PHP Laravel选项选择不呈现正确的值

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

我想使用laravel-nova语法在select中显示一个值数组作为选项。我设法获得在select中呈现的选项,但这些选项的值是这样的

<option value="2"></option>
<option value="1"></option>
<option value="0"></option>

我想要的是文本作为一个值。

这是我到目前为止所得到的:

Select::make('Slug')->options(
   $this->selectOptions()
)


public function selectOptions()
{
    $urls = DB::table('subpages');
    $slugs = $urls->pluck('slug');

    return $slugs;
}

我究竟做错了什么?

php laravel laravel-nova
2个回答
1
投票

确保get()子页面为Illuminate\Support\CollectionmapWithKeys()以重新格式化结果。使用toArray()提供Nova假定的格式:

private function selectOptions(): array
{
    $subpages = DB::table('subpages')->get();
    return $subpages->mapWithKeys(function ($subpage) {
        return [$subpage->slug => $subpage->slug];
    })->toArray();
}

这是返回结果的样子:

[
    'my-article-1' => 'my-article-1',
    'my-article-2' => 'my-article-2',
    'my-article-3' => 'my-article-3',
]

0
投票

我建议使用以下参数:

->pluck('yourValue','yourKey');

这样可以为您的值提供有用的标签。


推荐问答