- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
add('combat','entity',array( -6ren">
这是我的问题。我在 symfony 2.1 上使用 buildForm
方法来构建我的表单。使用以下代码一切正常:
$builder->add('combat','entity',array(
class' => 'KarateCompetitionBundle:CompetitionCombat',
'empty_value' => 'Sélectionner un combat'));
但我只想过滤并显示一些Combat
。这就是为什么我必须使用 query_builder
选项的原因。当我这样做时,我收到了 This value is not valid
错误消息。这是代码:
$builder->add('combat','entity',array(
'class' => 'KarateCompetitionBundle:CompetitionCombat',
'empty_value' => 'Sélectionner un combat',
'query_builder' => function(CombatRepository $cr) {
return $cr->getAllWithoutBilanQueryBuilder();}));
我至少减少了代码(即不对 getAllWithoutBilanQueryBuilder
方法进行过滤)以便能够找到问题。
public function getAllWithoutBilanQueryBuilder(){
$queryBuilder = $this->getEntityManager()->createQueryBuilder();
return $queryBuilder->select('c')->from('KarateEntrainementBundle:CompetitionCombat', 'c');
我比较了每种情况下生成的 html 代码,它们是相同的。
在将表单与请求 $form->bind($request)
绑定(bind)后,我在 Controller 上放置了一个 var_dump($object)
,看起来当我使用 query_builder
选项 combat
为 null,如果我不使用它则它不为 null。
我无法理解为什么?我在网上发现很少有帖子有同样的问题,但没有一个有答案。是否可能存在 symfony 问题或我做错了什么?
最佳答案
我遇到了完全相同的问题,并且 - 在我的例子中 - 追溯到 Symfony\Bridge\Doctrine\Form\ChoiceList\ORMQueryBuilderLoader。
当表单被验证时,实体通过 ORMQueryBuilderLoader::getEntitiesByIds() 中的主键加载,方法是向查询构建器添加 IN() 子句。在我的例子中,这个 IN() 子句是无效的,所有可选择的实体都被返回。
这反过来导致 Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToValuesTransformer::reverseTransform() 抛出 TransformationFailedException,因为加载实体的数量和提交的选择不一样。
我想这个特定错误还有其他可能的原因。以下是您可以尝试的方法:
关于symfony - "This value is not valid"在 symfony2.1 上的 "query_builder"buildForm 上使用 "entity",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15192735/
我是一名优秀的程序员,十分优秀!