如何呈现动态 Select (ChoiceType)?
How to render a dynamic Select (ChoiceType)?
所以我正在尝试为 产品 Table 表单
生成动态 select
而不是像这样写所有的选项:(来自 productType
的代码)
->add('id_cat', ChoiceType::class, [
'choices' => [
'cosmetique' =>'1',
'vetement' => '2',
'parfums' => '3',
],
])
我希望从 另一个 table Category(id,cat_name)
.
生成选项
例如,它显示 cat_name
而不是“cosmetique
”,而显示 id
而不是 1
(这些是从 table 类别的数据库生成的值)
我写了这个函数 return 来自 table 类别的所有值在 table $tab
public function cat (CategoryRepository $categoryRepository)
{
$allcat=$categoryRepository->findAll();
$tab=[];
foreach($allcat as $cat)
{
$tab=$cat->getId();
$tab[$tab]=$cat->getCatname();
}
return $tab;
}
我不知道我应该把它放在哪里?以及如何将 $tab
发送到 ProductType.php
页面
为什么不直接制作 tab[] 就像在填充之前静态内置一个名为 'choices' 的字段,然后将每个 I'd 和类别添加到它和 return table 和 return 数组的结果在哪里?
tab['choices']=$cat->getID();
tab['choices'][tab['choices']]=$cat->getCatname();
然后
for each ($choices as $choice)
For each ($choice as $category)
Print_r( $category)
如果你在这两个实体之间有关系(我猜你有),你可以轻松地使用 Symfony 的实体类型来避免这样的问题,它会显示类别 table 中的所有内容并提交根据您的关联选择要保存的对象:
$builder->add('category', EntityType::class, [
'class' => Category::class,
'choice_label' => 'cat_name',
]);
或者,如果您想保留自己的方式,可以将数组作为选项传递给表单,但这不是一个好的做法。
所以我正在尝试为 产品 Table 表单
生成动态 select而不是像这样写所有的选项:(来自 productType
的代码)
->add('id_cat', ChoiceType::class, [
'choices' => [
'cosmetique' =>'1',
'vetement' => '2',
'parfums' => '3',
],
])
我希望从 另一个 table Category(id,cat_name)
.
例如,它显示 cat_name
而不是“cosmetique
”,而显示 id
而不是 1
(这些是从 table 类别的数据库生成的值)
我写了这个函数 return 来自 table 类别的所有值在 table $tab
public function cat (CategoryRepository $categoryRepository)
{
$allcat=$categoryRepository->findAll();
$tab=[];
foreach($allcat as $cat)
{
$tab=$cat->getId();
$tab[$tab]=$cat->getCatname();
}
return $tab;
}
我不知道我应该把它放在哪里?以及如何将 $tab
发送到 ProductType.php
页面
为什么不直接制作 tab[] 就像在填充之前静态内置一个名为 'choices' 的字段,然后将每个 I'd 和类别添加到它和 return table 和 return 数组的结果在哪里?
tab['choices']=$cat->getID();
tab['choices'][tab['choices']]=$cat->getCatname();
然后
for each ($choices as $choice)
For each ($choice as $category)
Print_r( $category)
如果你在这两个实体之间有关系(我猜你有),你可以轻松地使用 Symfony 的实体类型来避免这样的问题,它会显示类别 table 中的所有内容并提交根据您的关联选择要保存的对象:
$builder->add('category', EntityType::class, [
'class' => Category::class,
'choice_label' => 'cat_name',
]);
或者,如果您想保留自己的方式,可以将数组作为选项传递给表单,但这不是一个好的做法。