我有一个简单的流体形式,带有无线电和正常输入字段,如下所示:
<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类型的属性,因为我正在使用此单选按钮的值并将其存储为字符串。
欢迎提出建议和意见:)
答案 0 :(得分:0)
我认为NotEmpty Validator与语言文件相结合是一种可接受的解决方案