0

登録フォームに検証を追加しようとしていますが、機能しません。これまでのところ、ユーザーエンティティを追加しました

スニペット。

class User {

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
   protected $userid;

/**
 * @ORM\Column(type="string", length=30)
 */
 protected $username;

このために、validation.yml をバンドルに追加しました。

# src/Blomster/UserBundle/Resources/config/validation.yml

Blomster/UserBundle/Entity/User:
    properties:
        username:
            - NotBlank: ~
            - MinLength: { limit: 3, message: "Username is too short." }
            - MaxLength: { limit: 15, message: "Username is too long." }

$form->isValid() を使用すると常に true が返されるため、フォームを var_dump しようとしました

      'validation_groups' => null
      'validation_constraint' => null
      'constraints' => 
        array (size=0)
          ...

フォーム自体はうまく機能しており、送信時にデータベースに追加されます。何らかの方法でフォームに制約を追加する必要がありますか?

UserType.php を追加

class UserType extends AbstractType {

  public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('username', null, array('label' => 'Username'));
    $builder->add('email', 'email', array('label' => 'Email'));
    $builder->add('password', 'repeated', array(
        'type' => 'password',
        'required' => true,
        'first_options' => array('label' => 'Password'),
        'second_options' => array('label' => 'Repeat password'),
      ));
  }

  public function getDefaultOptions(array $options) {
    return array('data_class' => 'Blomster\UserBundle\Entity\User');
  }

  public function getName() {
    return 'user';
  }
}
4

1 に答える 1

1

長さ制限を使用する必要があります:

        - MinLength: { limit: 3 }
        - MaxLength: { limit: 15 }

ここにドキュメントがあります。

実際には、メッセージなどの他のオプションも設定できるため、制限を指定する必要があります。

于 2012-09-30T08:34:55.840 に答える