2016-11-23 10 views
0

私はSymfony3を使用していますが、商品エンティティと税エンティティがあります。エンティティタイプ:: classでchoice_valueを使用すると、エンティティの編集時に正しいオプションが選択されません。

//Product 
/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Tax") 
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL") 
*/ 
private $tax; 

これは

->add('tax', EntityType::class, array(
      'label' => 'Taxe', 
      'class' => 'AppBundle\Entity\Tax', 
      'choice_label' => 'name', 
      'placeholder' => 'Tax', 
      'multiple' => false, 
      'expanded' => false, 
      'required' => false, 
      'choice_value' => function ($tax) { 
       /** @var Tax $tax */ 
       return $tax->getRate(); 
      }, 
     )) 

問題が編集エンティティ、プレースホルダは、この製品のない権利税を選択しているとき、私はchoice_valueを削除する際に税が可能になるということですでProductTypeです選択された。

を解決:

をchoice_valueを使用するには、値がユニーク

答えて

0

奇妙である必要があり、すべてが右ホウスに見えます。また、変更を行った後、あなたが明確に

->add('tax', EntityType::class, array(
     'label' => 'Taxe', 
     'class' => 'AppBundle:Tax', 
     'choice_label' => 'name', 
     'placeholder' => 'Tax', 
     'multiple' => false, 
     'expanded' => false, 
     'required' => false, 
     'choice_value' => function ($tax) { 
      return $tax->getRate(); 
     }, 
)) 

:私がお勧めすることができ 唯一のことは、「クラス」が指定されており、また、呼び出し可能な「choice_value」にコメントを取り除くという方法を変更してみてくださいですあなたのキャッシュ:

php bin/console cache:clear --env=prod 

私は他の何かを考えることはできません。

+0

choice_valueを使用するには、値が一意である必要があります – hous

+0

'getRate() 'から返される値は一意ではありませんか?そうでない場合は、Doctrineアノテーションを使ってエンティティ内で '$ rate'を一意にする必要があるかもしれません。' 'choice_value '=> rate'' 'rate''はTax Entityのプロパティです。それはうまくいくはずです。 –

関連する問題