Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 如果仅使用单选按钮,则类型3表单验证不起作用_Validation_Typo3_Fluid_Extbase_Typo3 6.2.x - Fatal编程技术网

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>