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;
     }
 }