Symfony 表单类型查询构建器关联
Symfony formtype query builder associations
我使用的是 Symfony 3.2,我想要一个实体的表单类型与另一个关联:
class Aliment
// ...
private enseigneId;
// ...
和
class Enseigne
// ...
private nomEnseigne
// ...
和 Aliment.enseigneId 指的是 Enseigne.id,但我想在我的表单(CRUD,用于创建)中做的是让用户选择一个 ID,但我想显示取而代之的是该 ID 的值,因此对用户来说更容易。
这是我的表单类型(工单):
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('date', DateTimeType::class, array(
'data' => new \DateTime()
))
->add('aliments')
->add('prixTotal')
->add('recapitulatif')
->add('modePaiement')
->add('enseigneId', EntityType::class, array(
'class' => 'AppBundle\Entity\Enseigne',
'choice_label' => function ($enseigne) {
/** @var $enseigne Enseigne */
return $enseigne->getNomEnseigne();
}
));
}
但它一直显示整数 0(而 getNomEnseigne() return 是一个字符串,数据库中填满了正确的数据集),我不知道该怎么做。
我希望它存储为整数,但我想(在选择字段中)显示为它所指的 ID 的值。
Id | nomEnseigne | ...
-----------------------
0 | LECLERC | ...
1 | LIDL | ...
在上面的示例中,用户会看到字符串 "LECLERC",但会存储整数 0。
感谢您的帮助。
您可以尝试其他方法,例如
'choice_label' => 'nomEnseigne',
或者实现Enseigne实体的__toString()方法
/**
* @return string
*/
public function __toString()
{
if (empty($this->nomEnseigne) {
return 'enseigne ' . $this->id;
}
return (string) $this->nomEnseigne;
}
我使用的是 Symfony 3.2,我想要一个实体的表单类型与另一个关联:
class Aliment
// ...
private enseigneId;
// ...
和
class Enseigne
// ...
private nomEnseigne
// ...
和 Aliment.enseigneId 指的是 Enseigne.id,但我想在我的表单(CRUD,用于创建)中做的是让用户选择一个 ID,但我想显示取而代之的是该 ID 的值,因此对用户来说更容易。
这是我的表单类型(工单):
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('date', DateTimeType::class, array(
'data' => new \DateTime()
))
->add('aliments')
->add('prixTotal')
->add('recapitulatif')
->add('modePaiement')
->add('enseigneId', EntityType::class, array(
'class' => 'AppBundle\Entity\Enseigne',
'choice_label' => function ($enseigne) {
/** @var $enseigne Enseigne */
return $enseigne->getNomEnseigne();
}
));
}
但它一直显示整数 0(而 getNomEnseigne() return 是一个字符串,数据库中填满了正确的数据集),我不知道该怎么做。 我希望它存储为整数,但我想(在选择字段中)显示为它所指的 ID 的值。
Id | nomEnseigne | ...
-----------------------
0 | LECLERC | ...
1 | LIDL | ...
在上面的示例中,用户会看到字符串 "LECLERC",但会存储整数 0。
感谢您的帮助。
您可以尝试其他方法,例如
'choice_label' => 'nomEnseigne',
或者实现Enseigne实体的__toString()方法
/**
* @return string
*/
public function __toString()
{
if (empty($this->nomEnseigne) {
return 'enseigne ' . $this->id;
}
return (string) $this->nomEnseigne;
}