/** * @param mixed $val * @param array $data * @return $this */ public function setValue($val, $data = array()) { // convert to a number parent::setValue(str_replace('%', '', $val)); $dataVal = $this->dataValue(); // divide by 100 if needed and set again if (strpos($val, '%') !== false || $dataVal > 1 || $dataVal < -1) { $dataVal = (double) $dataVal / 100.0; parent::setValue($dataVal); } return $this; }
public function setValue($val) { $this->value = $val; if (is_array($val)) { $this->fieldCurrency->setValue($val['Currency']); $this->fieldAmount->setValue($val['Amount']); } elseif ($val instanceof DBMoney) { $this->fieldCurrency->setValue($val->getCurrency()); $this->fieldAmount->setValue($val->getAmount()); } // @todo Format numbers according to current locale, incl. // decimal and thousands signs, while respecting the stored // precision in the database without truncating it during display // and subsequent save operations return $this; }
protected function checkInputValidation($locale, $tests) { i18n::set_locale($locale); $field = new NumericField('Number'); $validator = new RequiredFields('Number'); foreach ($tests as $input => $output) { // Both decimal and thousands B $field->setValue($input); if ($output === false) { $this->assertFalse($field->validate($validator), "Expect validation to fail for input {$input} in locale {$locale}"); $this->assertEquals(0, $field->dataValue(), "Expect invalid value to be rewritten to 0 in locale {$locale}"); // Even invalid values shouldn't be rewritten $this->assertEquals($this->clean($input), $field->Value(), "Expected input {$input} to be saved in the field in locale {$locale}"); } else { $this->assertTrue($field->validate($validator), "Expect validation to succeed for {$input} in locale {$locale}"); $this->assertEquals($output, $field->dataValue(), "Expect value {$input} to be mapped to {$output} in locale {$locale}"); } } }
public function testValidator() { i18n::set_locale('en_US'); $field = new NumericField('Number'); $field->setValue('12.00'); $validator = new RequiredFields('Number'); $this->assertTrue($field->validate($validator)); $field->setValue('12,00'); $this->assertFalse($field->validate($validator)); $field->setValue('0'); $this->assertTrue($field->validate($validator)); $field->setValue(false); $this->assertFalse($field->validate($validator)); i18n::set_locale('de_DE'); $field->setValue('12,00'); $validator = new RequiredFields(); $this->assertTrue($field->validate($validator)); $field->setValue('12.00'); $this->assertFalse($field->validate($validator)); $field->setValue(0); $this->assertRegExp("#<span[^>]+>\\s*0\\s*<\\/span>#", "" . $field->performReadonlyTransformation()->Field() . ""); }
public function testValidator() { i18n::set_locale('en_US'); $field = new NumericField('Number'); $field->setValue('12.00'); $validator = new RequiredFields('Number'); $this->assertTrue($field->validate($validator)); $field->setValue('12,00'); $this->assertFalse($field->validate($validator)); $field->setValue('0'); $this->assertTrue($field->validate($validator)); $field->setValue(false); $this->assertFalse($field->validate($validator)); i18n::set_locale('de_DE'); $field->setValue('12,00'); $validator = new RequiredFields(); $this->assertTrue($field->validate($validator)); $field->setValue('12.00'); $this->assertFalse($field->validate($validator)); }
/** * Test empty values */ public function testEmptyValidator() { i18n::set_locale('en_US'); $field = new NumericField('Number'); $validator = new RequiredFields('Number'); // Treats '0' as given for the sake of required fields $field->setValue('0'); $this->assertTrue($field->validate($validator)); $this->assertEquals(0, $field->dataValue()); // Treat literal 0 $field->setValue(0); $this->assertTrue($field->validate($validator)); $this->assertEquals(0, $field->dataValue()); // Should fail the 'required but not given' test $field->setValue(''); $this->assertFalse($field->validate($validator)); $field->setValue(false); $this->assertFalse($field->validate($validator)); }
/** * Set value of the {@link NumericField} because that is the actual value * of the stock level. If unlimited stock is selected the value is -1. * * (non-PHPdoc) * @see FormField::setValue() * @return StockField */ function setValue($value) { $this->value = $value; $this->stockLevelField->setValue($value); return $this; }
public function GameSignupFields($reg) { $fields = new FieldList(); $currentID = $this->getCurrentEvent()->ID; $event = Event::get()->byID($currentID); $prefNum = $event->PreferencesPerSession; $reg = $this->getCurrentRegistration(); $fields->push(new HiddenField('RegistrationID', 'Reg', $reg->ID)); $fields->push($fav = new HiddenField('FavouriteID', 'Favourite')); $fav->addExtraClass('favourite-id'); $fields->push(new LiteralField('no-js', '<p class="js-hide">This page works better with javascript. If you can\'t use javascript, rank the items below in your order of preference. 1 for your first choice, 2 for your second. Note, only the top ' . $prefNum . ' will be recorded</p>')); for ($session = 1; $session <= $event->NumberOfSessions; $session++) { $evenOdd = $session % 2 == 0 ? 'even' : 'odd'; $fieldset = '<fieldset id="round' . $session . '" class="preference-group preference-' . $prefNum . ' data-preference-select="preference-select-group">'; $fields->push(new LiteralField('Heading_' . $session, '<h5>Round ' . $session . ' preferences</h5>' . $fieldset)); $games = Game::get()->filter(array('Session' => $session, 'ParentID' => $currentID, 'Status' => true))->sort('RAND()'); $i = 1; foreach ($games as $game) { $gameOptions = new NumericField("GameID_" . $game->ID, ''); $gameOptions->setValue($i)->setRightTitle($game->Title)->setAttribute('type', 'number')->setAttribute('data-id', $game->ID)->addExtraClass('small-input js-hide-input'); $fields->push($gameOptions); $i++; } // Add not playing option $gameOptions = new NumericField("NotPlaying_" . $session, ''); $gameOptions->setValue($i)->setRightTitle("No game (or Facilitating)")->setAttribute('type', 'number')->addExtraClass('small-input js-hide-input not-playing'); $fields->push($gameOptions); $fields->push(new LiteralField('fieldset', '</fieldset>')); } return $fields; }