3

フォームを送信すると、エンティティで制約を定義しましたが、日付を含むテキストフィールドが検証されません。何が間違っていますか?日付を含むテキストフィールドにカスタムの日付バリデーターを作成する必要がありますか?

私のフォームクラスには

public function buildForm(FormBuilder $builder, array $options)
{
    $builder
            ->add('added', 'date', array(
                'required' => false,
                'widget' => 'single_text',
                'format' => 'yyyy-MM-dd',
                'attr' => array(
                    'class' => 'datepicker'
                )
            ))
}

実体で

/**
 * @var date
 *
 * @Assert\Date(message = "test")
 * @ORM\Column(name="added", type="date", nullable=true)
 */
private $added;

そしてコントローラーで(私はそれらのエラーをリストする必要があります)

    $request = $this->getRequest();
    $r = $this->getProfileRepository();
    $profile = $id ? $r->find($id) : new \Alden\XyzBundle\Entity\Profile();
    /* @var $profile \Alden\XyzBundle\Entity\Profile */
    $form = $this->createForm(new ProfileType(), $profile);
    if ($request->getMethod() == 'POST')
    {
        $form->bindRequest($request);
        $errors = $this->get('validator')->validate($profile);
        foreach ($errors as $e)
        {
            /* @var $e \Symfony\Component\Validator\ConstraintViolation */
            $errors2[$e->getPropertyPath()] = $e->getMessage();
        }
        if (count($errors2))
        {
        ...
        } else {
            $em = $this->getEntityManager();
            $em->persist($profile);
            $em->flush();
        }
4

1 に答える 1

1

構成を更新する必要がある場合があります。Symfony2 bookのValidationセクションによると:

Symfony2 バリデーターはデフォルトで有効になっていますが、注釈メソッドを使用して制約を指定している場合は、注釈を明示的に有効にする必要があります。

例えば:

# app/config/config.yml
framework:
    validation: { enable_annotations: true }
于 2012-05-30T11:32:05.863 に答える