2015-07-11 2 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? Я использовал свойство типа string для переключателей, потому что я работаю со значениями этих переключателей и сохраняю их как строки.

Предложение и комментарии приветствуются :)

+0

Так почему бы вам не использовать NotEmpty валидатор? На чем вы концентрируетесь, пользовательское сообщение об ошибке или предварительный выбор ваших переключателей? –

+0

Вы правы, также работает NotEmpty Validator, и я могу отправить собственное сообщение об ошибке с помощью перевода жидкости и кода ошибки, поэтому мне не нужен специальный валидатор :) – Fox

+0

Да, вы можете, но насколько я знаю вас может только изменить перевод NotEmptyValidator глобально. Это по-прежнему функция, которую я пропустил в Extbase, чтобы установить индивидуальное сообщение об ошибке в стандартном экскаваторе extbase. Поэтому я бы предпочел, чтобы ваше решение создало пользовательский валидатор. –

ответ

0

Я думаю NotEmpty валидатор в сочетании с языком файлом является приемлемым решением

 Смежные вопросы

  • Нет связанных вопросов^_^