У меня есть некоторые проблемы с многоступенчатой формой, потому что проверка на один шаг, который содержит форму только с радио-кнопкой не работает :(TYPO3 форма проверка не работает, если только селективные кнопки используются
У меня есть простой свойство типа, которые представляют собой значение кнопки радио:
class Step1Data extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
/**
* type
*
* @var string
* @validate NotEmpty
*/
protected $type;
/**
* Returns the type
*
* @return string $type
*/
public function getType() {
return $this->type;
}
/**
* Sets the type
*
* @param string $type
* @return void
*/
public function setType($type) {
$this->type = $type;
}
}
жидкость разметки выглядит следующим образом для этого шага:
<f:layout name="Default" />
<f:section name="main">
<f:form action="step1redirect" class="step1" name="step1data" object="{step1data}">
<f:render partial="FormErrors" arguments="{field: 'step1data.type'}" />
<label>
<f:form.radio property="type" value="type-1" />
type 1
</label>
<label>
<f:form.radio property="type" value="type-2" />
type 2
</label>
<f:form.submit value="next" />
</f:form>
</f:section>
действия контроллера для этого шага является:
/**
* Step1
*
* @param \Fox\Example\Domain\Model\Step1Data $step1data
* @ignorevalidation $step1data
*/
public function step1Action(\Fox\Example\Domain\Model\Step1Data $step1data = NULL) {
if ($GLOBALS['TSFE']->fe_user->getKey('ses', 'step1data') && $step1data == NULL) {
$step1data = unserialize($GLOBALS['TSFE']->fe_user->getKey('ses', 'step1data'));
}
$this->view->assign('step1data', $step1data);
}
/**
* Step1 redirect action
*
* @param \Fox\Example\Domain\Model\Step1Data $step1data
*/
public function step1redirectAction(\Fox\Example\Domain\Model\Step1Data $step1data) {
$GLOBALS['TSFE']->fe_user->setKey('ses', 'step1data', serialize($step1data));
$GLOBALS['TSFE']->fe_user->storeSessionData();
$this->redirect('step2');
}
Если добавить пример второго свойства имени типа строки с NotEmpty аннотацией и текстовое поле для текучей среды к этой форме, как:
<f:layout name="Default" />
<f:section name="main">
<f:form action="step1redirect" class="step1" name="step1data" object="{step1data}">
<f:render partial="FormErrors" arguments="{field: 'step1data.type'}" />
<label>
<f:form.radio property="type" value="type-1" />
type 1
</label>
<label>
<f:form.radio property="type" value="type-2" />
type 2
</label>
<!-- EXAMPLE second property -->
<f:render partial="FormErrors" arguments="{field: 'step1data.name'}"/>
<f:form.textfield property="name" />
<!-- EXAMPLE second property -->
<f:form.submit value="next" />
</f:form>
</f:section>
в валидация работает. Проверка также работает, если у меня есть только текстовое поле в этой форме, но если у меня есть только переключатели без текстового поля в этой форме, проверка не работает и появляется ошибка, потому что объект step1data имеет значение NULL.
Я не знаю причину этой странной проблемы, надеюсь, вы можете мне помочь?
не может воспроизвести эту проблему? – Fox