在我的流体模板中,我有:
<f:form.textfield
id="{propertyName}"
property="{propertyName}"
value="{value}"
placeholder=""
class="form-control"
/>
我想为&#34;值&#34;添加条件。类似的东西:
<f:form.textfield
id="{propertyName}"
property="{propertyName}"
<f:if condition="{value}"> value="{value}" <f:if>
placeholder=""
class="form-control"
/>
目前我正在使用解决方法
<f:if condition="{value}">
<f:then>
<f:form.textfield id="{propertyName}" property="{propertyName}" value="{value}" placeholder="" class="form-control" />
</f:then>
<f:else>
<f:form.textfield id="{propertyName}" property="{propertyName}" placeholder="" class="form-control" />
</f:else>
</f:if>
但我想避免双重代码。
答案 0 :(得分:0)
答案 1 :(得分:0)
无法将ViewHelpers嵌套在XML表示法中。但是,您可以使用内联表示法,至少在一定程度上:
<f:form.textfield
value="{f:if(condition: '<your-condition>', then: value)}" />
是的,value
属性仍会以这种方式传递,但值为null
。请注意,如果提交的值为空,则<f:form.textfield>
视图助手会自动省略value
属性(请参阅the source code of TYPO3\CMS\Fluid\ViewHelpers\Form\TextfieldViewHelper
, line 74ff.):
public function render($required = false, $type = 'text')
{
// [...]
$value = $this->getValueAttribute();
if ($value !== null) {
$this->tag->addAttribute('value', $value);
}
在简单的情况下,您只想在value
属性为空时省略它,只需始终传递value="{value}"
就足够了。如果值为null
,则该属性不会包含在呈现的<input>
标记中。
答案 2 :(得分:0)
你可以这样做:
<f:form.textfield
name="{data.name -> f:format.urlencode()}"
type="{f:if(then: '{data.inputtyp}', else: 'text', condition: '{data.inputtyp}')}"
class="{f:if(then: '{data.class}', else: '', condition: '{data.class}')}"
value="{f:if(then: '{data.populate}', else: '', condition: '{data.populate}')}"
placeholder="{f:if(then: '{data.placeholder}', else: '', condition: '{data.placeholder}')}" />