我希望使用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;
}我做错了什么?
发布于 2019-04-11 21:55:04
确保将子页面get()为Illuminate\Support\Collection和mapWithKeys(),以重新格式化结果。使用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',
]发布于 2019-04-11 21:51:36
我建议使用以下参数:
->pluck('yourValue','yourKey');这就产生了有用的标签与你的价值。
https://stackoverflow.com/questions/55632933
复制相似问题