class userForm extends sfFormDoctrine { public function setup() { // フォーム用ウィジェットの定義 $this->setWidgets(array( 'id' => new sfWidgetFormInputHidden(), 'name' => new sfWidgetFormInputText(array('label'=>'User name'), array('size'=>'64','maxlength' => 32)), 'mail_address' => new sfWidgetFormInputText(array('label'=>'Mail address'), array('size'=>'64','maxlength' => 128)), 'mail_address2' => new sfWidgetFormInputText(array('label'=>'Mail address(again)'), array('size'=>'64','maxlength' => 128)), )); // フォーム用Validationの定義 $this->setValidators(array( 'id' => new sfValidatorInteger( array('min' => 1), array('min' => 'Invalid value', 'invalid' => 'Invalid value')), 'name' => new sfValidatorString( array('max_length' => 32), array('required' => 'Input required','max_length'=>'Max 32 character')), 'mail_address' => new sfValidatorEmail( array('max_length' => 128), array('max_length'=>'Max 128 character','invalid' => 'Invalid value','required' => 'Input required')), 'mail_address2' => new sfValidatorEmail( array('max_length' => 128), array('max_length'=>'Max 128 character','invalid' => 'Invalid value','required' => 'Input required')), )); // 複数フィールドが条件に絡むValidationはsetPreValidatorかsetPostValidatorで実施 // 今回はメールアドレスとパスワードがチェック対象となる $this->validatorSchema->setPostValidator(new sfValidatorAnd(array( new sfValidatorSchemaCompare('mail_address', sfValidatorSchemaCompare::EQUAL, 'mail_address2', array(), array('invalid'=> 'Unmatch mail address')), new sfValidatorSchemaCompare('mail_address2', sfValidatorSchemaCompare::EQUAL, 'mail_address', array(), array('invalid'=> 'Unmatch mail address')), new sfValidatorDoctrineUnique(array('model' => 'Accounts', 'column' => array('mail_address')), array('invalid'=>'This mail address already used')), ))); // ネームフィールドの規則設定 $this->widgetSchema->setNameFormat('user[%s]'); $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema); $this->setupInheritance(); parent::setup(); } public function getModelName() { return 'accounts'; } }