У меня есть простая форма жидкости с радио и обычным полем вводом, как это:TYPO3 проверка радиокнопки лучшей практика
<f:form action="create" name="data" object="{data}">
<p>Wählen Sie Ihre Schulform aus:</p>
<f:render partial="FormErrors" arguments="{field: 'data.schoolType'}" />
<f:form.radio id="secondary-school" property="schoolType" value="secondary-school" />
<label for="secondary-school">Gymnasium</label>
<f:form.radio id="school" property="schoolType" value="school" />
<label for="school">Oberschule</label>
<label for="name">
<f:translate key="tx_example_domain_model_school.name" />
<span class="required">*</span>
<f:render partial="FormErrors" arguments="{field: 'data.name'}"/>
</label>
<f:form.textfield property="name" />
...
</f:form>
Теперь я хочу, чтобы проверить радио кнопки, потому что оба являются начальными не проверено, но дон Не знаю, хорошо ли то, что я использовал.
Я работаю со свойствами, как в примере выше показывает и создал следующий класс:
class Data extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
/**
* schoolType
*
* @var string
* @validate \Example\Example\Domain\Validator\CustomValidator
*/
protected $schoolType;
/**
* name
*
* @var string
* @validate NotEmpty
*/
protected $name;
irrelvant properties, setter, getter and so on ...
}
Так я использовал пользовательский валидатор для проверки радио кнопки, которая выглядит следующим образом:
class CustomValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator {
protected $acceptsEmptyValues = FALSE;
/**
* Validates the radio buttons
*
* @param mixed $value
* @return bool
*/
public function isValid($value) {
if (!isset($value) || $value === NULL) {
$this->addError('Wählen Sie einen Schultyp aus.', time());
return FALSE;
}
return TRUE;
}
}
Работает так, как ожидалось, но нет ли более простого способа получить такое же решение? Может быть, с использованием стандартного валидатора TYPO3? Я использовал свойство типа string для переключателей, потому что я работаю со значениями этих переключателей и сохраняю их как строки.
Предложение и комментарии приветствуются :)
Так почему бы вам не использовать NotEmpty валидатор? На чем вы концентрируетесь, пользовательское сообщение об ошибке или предварительный выбор ваших переключателей? –
Вы правы, также работает NotEmpty Validator, и я могу отправить собственное сообщение об ошибке с помощью перевода жидкости и кода ошибки, поэтому мне не нужен специальный валидатор :) – Fox
Да, вы можете, но насколько я знаю вас может только изменить перевод NotEmptyValidator глобально. Это по-прежнему функция, которую я пропустил в Extbase, чтобы установить индивидуальное сообщение об ошибке в стандартном экскаваторе extbase. Поэтому я бы предпочел, чтобы ваше решение создало пользовательский валидатор. –