public function validateRequiredOneField(& $value, $error_name, $options) {
		// if we have type errors we skip required validation
		if ($this->hasErrors($error_name)) return;
		// check if its required field
		if (isset($options['options']['required']) && ($options['options']['required'] === true || ($options['options']['required'] . '') === '1')) {
			if ($options['options']['php_type'] == 'integer' || $options['options']['php_type'] == 'float') {
				if (empty($value)) {
					$this->error('danger', \Object\Content\Messages::REQUIRED_FIELD, $error_name);
				}
			} else if ($options['options']['php_type'] == 'bcnumeric') { // accounting numbers
				if (\Math::compare($value, '0', $options['options']['scale']) == 0) {
					$this->error('danger', \Object\Content\Messages::REQUIRED_FIELD, $error_name);
				}
			} else if (!empty($options['options']['multiple_column']) || is_array($value)) {
				if (empty($value)) {
					$this->error('danger', \Object\Content\Messages::REQUIRED_FIELD, $error_name);
				}
			} else {
				if ($value . '' == '') {
					$this->error('danger', \Object\Content\Messages::REQUIRED_FIELD, $error_name);
				}
			}
		}
		// validator
		if (!empty($options['options']['validator_method']) && !empty($value) && empty($options['options']['multiple_column']) && (!is_array($value) || $options['options']['method'] == 'file')) {
			$neighbouring_values = [];
			if (!empty($options['options']['values_key'])) {
				$neighbouring_values_key = $options['options']['values_key'];
				array_pop($neighbouring_values_key);
				$neighbouring_values = array_key_get($this->values, $neighbouring_values_key);
			}
			$temp = \Object\Validator\Base::method(
				$options['options']['validator_method'],
				$value,
				$options['options']['validator_params'] ?? [],
				$options['options'],
				$neighbouring_values
			);
			if (!$temp['success']) {
				foreach ($temp['error'] as $v10) {
					$this->error('danger', $v10, $error_name);
				}
			} else if (!empty($temp['data'])) {
				$value = $temp['data'];
			}
		}
	}