Validation TYPO3单选按钮验证最佳实践
我有一个简单的流体形式,带有无线电和正常输入字段,如下所示:Validation TYPO3单选按钮验证最佳实践,validation,radio-button,fluid,extbase,typo3-6.2.x,Validation,Radio Button,Fluid,Extbase,Typo3 6.2.x,我有一个简单的流体形式,带有无线电和正常输入字段,如下所示: <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
<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 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验证器呢?你关注的是什么,自定义错误消息还是单选按钮的预选?你是对的,NotEmpty验证器也可以工作,我可以使用fluid translate和错误代码抛出自定义错误消息,所以我不需要自定义验证器:是的,你可以,但据我所知,您只能在全球范围内更改NotEmptyValidator的翻译。这仍然是我在Extbase中错过的一个特性,即在默认Extbase验证器上设置单个错误消息。因此,我仍然希望您的解决方案创建一个自定义验证器。您还可以将errorcode和翻译文件用于与标准验证器关联的自定义错误消息,例如属性名称has NotEmpty validator:fluid layout:error partial:{error.message}locallang.xlf请输入名称,以便轻松自定义每个字段的标准错误消息
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;
}
}