Validation 如果仅使用单选按钮,则类型3表单验证不起作用
我在使用多步骤表单时遇到一些问题,因为对只包含单选按钮的表单的单个步骤的验证不起作用: 我有一个简单的属性类型,表示单选按钮值:Validation 如果仅使用单选按钮,则类型3表单验证不起作用,validation,typo3,fluid,extbase,typo3-6.2.x,Validation,Typo3,Fluid,Extbase,Typo3 6.2.x,我在使用多步骤表单时遇到一些问题,因为对只包含单选按钮的表单的单个步骤的验证不起作用: 我有一个简单的属性类型,表示单选按钮值: class Step1Data extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity { /** * type * * @var string * @validate NotEmpty */ protected $type; /** * Returns the type * * @retu
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>
如果我在此表单中添加一个第二个属性名称,类型为string,带有NotEmpty注释和fluid textfield,如下所示:
<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>
验证正在进行中。如果此表单上只有textfield,验证也会起作用,但是如果此表单上只有单选按钮而没有textfield,则验证将不起作用,并且会出现错误,因为step1data对象为null
我不知道这个奇怪问题的原因,希望您能帮助我?解决方案是在具有相同属性名称的单选按钮上方隐藏一个输入字段:
<f:form.hidden property="type" />
<div class="group-block">
<label>
<f:form.radio property="type" value="wish1" />
type1
</label>
</div>
<div class="group-block">
<label>
<f:form.radio property="type" value="wish2" />
type2
</label>
</div>
因此,首先检查并验证隐藏字段,如果选中单选按钮,则类型属性将被覆盖没有人会重现此问题吗?
<f:form.hidden property="type" />
<div class="group-block">
<label>
<f:form.radio property="type" value="wish1" />
type1
</label>
</div>
<div class="group-block">
<label>
<f:form.radio property="type" value="wish2" />
type2
</label>
</div>