Changeset 9501
- Timestamp:
- 06/09/08 19:56:13 (2 years ago)
- Files:
-
- branches/1.1/lib/form/sfForm.class.php (modified) (3 diffs)
- branches/1.1/test/unit/form/sfFormTest.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/1.1/lib/form/sfForm.class.php
r9498 r9501 270 270 $this->widgetSchema[$name] = new sfWidgetFormSchemaDecorator($widgetSchema, $decorator); 271 271 $this->validatorSchema[$name] = $form->getValidatorSchema(); 272 272 273 $this->mergePreValidator($form->getValidatorSchema()->getPreValidator()); 274 $this->mergePostValidator($form->getValidatorSchema()->getPostValidator()); 275 273 276 $this->resetFormFields(); 274 277 } … … 318 321 $this->validatorSchema[$name] = new sfValidatorSchemaForEach($form->getValidatorSchema(), $n); 319 322 323 $this->mergePreValidator($form->getValidatorSchema()->getPreValidator()); 324 $this->mergePostValidator($form->getValidatorSchema()->getPostValidator()); 325 320 326 $this->resetFormFields(); 321 327 } … … 344 350 $this->widgetSchema[$field] = $widget; 345 351 } 346 352 347 353 foreach ($form->getValidatorSchema()->getFields() as $field => $validator) 348 354 { 349 355 $this->validatorSchema[$field] = $validator; 350 356 } 351 352 if (!is_null($form->getValidatorSchema()->getPreValidator())) 357 358 $this->mergePreValidator($form->getValidatorSchema()->getPreValidator()); 359 $this->mergePostValidator($form->getValidatorSchema()->getPostValidator()); 360 361 $this->resetFormFields(); 362 } 363 364 /** 365 * Merges a validator with the current pre validators. 366 * 367 * @param sfValidatorBase $validator A validator to be merged 368 */ 369 public function mergePreValidator(sfValidatorBase $validator = null) 370 { 371 if (is_null($validator)) 372 { 373 return; 374 } 375 376 if (is_null($this->validatorSchema->getPreValidator())) 377 { 378 $this->validatorSchema->setPreValidator($validator); 379 } 380 else 353 381 { 354 382 $this->validatorSchema->setPreValidator(new sfValidatorAnd(array( 355 !is_null($this->validatorSchema->getPreValidator()) ? $this->validatorSchema->getPreValidator() : new sfValidatorPass(),356 $ form->getValidatorSchema()->getPreValidator(),383 $this->validatorSchema->getPreValidator(), 384 $validator, 357 385 ))); 358 386 } 359 360 if (!is_null($form->getValidatorSchema()->getPostValidator())) 387 } 388 389 /** 390 * Merges a validator with the current post validators. 391 * 392 * @param sfValidatorBase $validator A validator to be merged 393 */ 394 public function mergePostValidator(sfValidatorBase $validator = null) 395 { 396 if (is_null($validator)) 397 { 398 return; 399 } 400 401 if (is_null($this->validatorSchema->getPostValidator())) 402 { 403 $this->validatorSchema->setPostValidator($validator); 404 } 405 else 361 406 { 362 407 $this->validatorSchema->setPostValidator(new sfValidatorAnd(array( 363 !is_null($this->validatorSchema->getPostValidator()) ? $this->validatorSchema->getPostValidator() : new sfValidatorPass(),364 $ form->getValidatorSchema()->getPostValidator(),408 $this->validatorSchema->getPostValidator(), 409 $validator, 365 410 ))); 366 411 } 367 368 $this->resetFormFields();369 412 } 370 413 branches/1.1/test/unit/form/sfFormTest.php
r9498 r9501 601 601 $t->isa_ok($widgetSchema['c'], 'sfWidgetFormTextarea', 'mergeForm() overrides original form widget'); 602 602 $t->isa_ok($validatorSchema['c'], 'sfValidatorPass', 'mergeForm() overrides original form validator'); 603 $t->isa_ok($validatorSchema->getPreValidator(), 'sfValidator And', 'mergeForm() merges pre validator');604 $t->isa_ok($validatorSchema->getPostValidator(), 'sfValidator And', 'mergeForm() merges post validator');603 $t->isa_ok($validatorSchema->getPreValidator(), 'sfValidatorPass', 'mergeForm() merges pre validator'); 604 $t->isa_ok($validatorSchema->getPostValidator(), 'sfValidatorPass', 'mergeForm() merges post validator'); 605 605 606 606 try

