setWidgets(array( 'id' => new sfWidgetFormInputHidden(), 'k_datu' => new sfWidgetFormInput(), )); $this->setValidators(array( 'id' => new sfValidatorPass(), 'k_datu' => new sfValidatorDate(), )); $this->widgetSchema->setLabels(array( 'k_datu' => 'Zaúčtovat k datu', )); $this->widgetSchema->setNameFormat('zauctuj_kurz[%s]'); $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema); $this->validatorSchema->setPostValidator( new sfValidatorCallback(array('callback' => array($this, 'validate_beh'))) ); } public function validate_beh($validator, $values) { if(!empty($values['k_datu'])){ $beh = Doctrine::getTable('Kurz_beh')->getBehByDate($values['id'],$values['k_datu'])->execute(); $beh = $beh[0]; if (!($beh->id)){ throw new sfValidatorError($validator, "K datu ".$values['k_datu']." není otevřen žádný běh kurzu."); } } return $values; } }