Php 在实体字段上设置选定值(Symfony表格)
我正在使用,我想设置我的选择列表的选择值 我有一个类别,其中包含以下字段:Php 在实体字段上设置选定值(Symfony表格),php,symfony,symfony-forms,sonata-admin,sonata,Php,Symfony,Symfony Forms,Sonata Admin,Sonata,我正在使用,我想设置我的选择列表的选择值 我有一个类别,其中包含以下字段:CategoryID、parentID、tag。parentID可以为空 我如何构建表单的代码: // Fields to be shown on create/edit forms protected function configureFormFields(FormMapper $formMapper) { // If edit -> get tag and id from tag
CategoryID、parentID、tag
。parentID可以为空
我如何构建表单的代码:
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
// If edit -> get tag and id from tag
if($this->subject->getCategoryId() !== null)
{
$tag_current = $this->subject->getCategoryId()->getTag();
$tag_current_id = $this->subject->getCategoryId()->getParentid()->getCategoryid();
}
$formMapper
->add('tag', 'text', array('label' => 'Tag'))
->add('name', 'text', array('label' => 'Naam'))
->add('nameEN', 'text', array('label' => 'Naam Engels', 'required' => false, 'data' => 'test'))
->add('parentcategory', 'entity', array(
'class' => 'DX\MyBundle\Entity\Category',
'empty_data' => null,
'empty_value' => "GEEN PARENT CATEGORIE",
'required' => false,
'data' => $tag_current_id,
'query_builder' => function(EntityRepository $er) use ($tag_current) {
return $er->createQueryBuilder('c')
->where('c.parentid IS NULL')
->andWhere('c.tag != :tag')
->andWhere('c.tag != :tag_current')
->setParameter('tag', 'FOTOGRAAF')
->setParameter('tag_current', $tag_current);
}
))
;
}
正如您所看到的,我试图设置数据属性,但没有结果。页面加载时总是选择空值无父类别
我的$tag\u current\u id
是一个整数,在本例中:11
。我的选择列表如下所示:
<select id="s54ff22c20ca39_parentcategory" name="s54ff22c20ca39[parentcategory]" class="select2-offscreen" tabindex="-1" title="Parentcategory">
<option value="">GEEN PARENT CATEGORIE</option>
<option value="1">THEMA</option>
<option value="11">FREEM SELECTIE</option>
</select>
根父分类
西玛
弗里姆精选酒店
但仍然没有被选中。我做错了什么?您的查询生成器应返回所有可用值,它将自动选择您的数据库值:
$formMapper->add('parentcategory', 'entity', array(
'class' => 'DX\MyBundle\Entity\Category',
'empty_data' => null,
'empty_value' => "GEEN PARENT CATEGORIE",
'required' => false,
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')
->where('c.parentid IS NULL')
->andWhere('c.tag != :tag')
->setParameter('tag', 'FOTOGRAAF')
}
))
更新:
这就是我在项目中所做的:
$formMapper->add('supplier', 'entity', array(
'class' => 'AcmeCoreBundle:ShopSupplier',
'empty_value' => 'None',
'empty_data' => null,
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('ss')
->orderBy('ss.name', 'ASC');
}
))
它会自动选择数据库值,并在未选择任何值时设置空值。如果它在您的项目中不起作用,我不知道。然后他总是选择空值。重要的是,我的类别不在选择列表中,这就是为什么我有第二个“andWhere”,在我的例子中,“empty_value”是设置默认值的方法(而不会混淆注入、id的索引或选择)。谢谢你,伙计!