2015-07-11 34 views
0

我有收音机和正常输入字段这样一个简单的流体形式: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验证器?我为单选按钮使用了一个字符串类型的属性,因为我正在处理这个单选按钮的值并将其存储为字符串。

建议和意见,欢迎:)

+0

那么你为什么不使用NotEmpty验证?您关注什么,自定义错误消息或预选您的单选按钮? –

+0

你是对的,NotEmpty Validator也可以工作,我可以通过使用流体翻译和错误代码来抛出一个自定义错误信息,所以我不需要自定义验证器:) – Fox

+0

是的,你可以,但据我所知只能更改全局NotEmptyValidator的翻译。这仍然是我在Extbase中错过的一个功能,可以在默认的extbase验证器上设置单个错误消息。因此,我仍然喜欢你的解决方案来创建一个自定义验证器。 –

回答

0

我觉得NotEmpty验证与语言文件的组合是一个可接受的解决方案