TYPO3单选按钮验证最佳实践

时间:2015-07-11 11:21:20

标签: 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="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类型的属性,因为我正在使用此单选按钮的值并将其存储为字符串。

欢迎提出建议和意见:)

1 个答案:

答案 0 :(得分:0)

我认为NotEmpty Validator与语言文件相结合是一种可接受的解决方案