PHP Laravel select 的选项未呈现正确的值
PHP Laravel options of select not rendering correct values
我想使用 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;
}
我做错了什么?
我建议使用以下参数:
->pluck('yourValue','yourKey');
这样可以为您的价值观制作有用的标签。
确保 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',
]
我想使用 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;
}
我做错了什么?
我建议使用以下参数:
->pluck('yourValue','yourKey');
这样可以为您的价值观制作有用的标签。
确保 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',
]