私はSymfony2.7.0- BETA1でLexikFormFilterBundle(現在の開発バージョン)を使用しています。期待どおりに動作しますが…
filter_entity
空のオプションが送信されると(つまり、エンティティが選択されていない場合)、すべてのフィールドでフォームエラーがスローされます。基本的な例で文書化されており、設定する必要があります
'validation_groups' => array( 'filtering')// NotBlank()制約関連のメッセージを回避する
しかし、私の場合、ManyToOneエンティティはNotBlank()
-Assertを使用しません。それにもかかわらず、フォームは存在しないエンティティに関するエラーをスローし''
ます。エンティティを選択すると、フィルターが正しくフィルターされ、エラーメッセージが表示されません。他のフィルターフィールドタイプも、空の場合でもエラーをスローしません。
これが私のコードの簡略化された表現です:
<?php
// src/AppBundle/Entity/Serviceevent.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Serviceevent
*
* @ORM\Table(name="serviceevents")
* @ORM\Entity(repositoryClass="AppBundle\Entity\ServiceeventRepository")
*/
class Serviceevent
{
/**
* @var \AppBundle\Entity\Park
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Park", inversedBy="serviceevents")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="park_id", referencedColumnName="id", nullable=false)
* })
*/
private $park;
}
<?php
// /src/AppBundle/Filter/ServiceeventFilterType.php
namespace AppBundle\Filter;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ServiceeventFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('park', 'filter_entity', array(
'class' => 'AppBundle:Park',
'property' => 'identifyingName',
'label' => 'Park',
'placeholder' => '',
'required' => false,
));
;
}
public function getName()
{
return 'serviceevent_filter';
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'csrf_protection' => false,
'validation_groups' => array('filtering'), // avoid NotBlank() constraint-related message
));
}
}
値が選択されていない場合、エラーがスローされることなく、そのフィールドのフィルタリングが行われなかったと思います。
代わりに、次のようなすべてのエンティティフィールドでフォームエラーが発生します。
Symfony \ Component \ Validator \ ConstraintViolation Object(Symfony \ Component \ Form \ Form).children [park] =
のせいで:
Symfony \ Component \ Form \ Exception \ TransformationFailedExceptionプロパティパス "[park]"の値を元に戻すことができません:選択肢 ""が存在しないか、一意ではありません
のせいで:
Symfony \ Component \ Form \ Exception \ TransformationFailedException選択肢 ""が存在しないか、一意ではありません
問題は、これらのエラーをどのように取り除くのかということです。
https://github.com/symfony/symfony/issues/14393#issuecomment-94996862のユーザーwcluijtの修正により、これが修正されました。これは、ここでの私の問題がSymfony2.7.0-BETA1のバグによって引き起こされたことを確認します。したがって、この質問は修正済みとして閉じることができます。ベータ関連のバグで時間を無駄にしてすみません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加