1

我刚刚加入了 Silverstripe 的潮流。我一直在尝试在getCMSfields表单上的文本字段前获得以下静态文本效果:

Telephone number:   +36 [__________]

其中“电话号码:”显然是字段标题(可以通过->setTitle()+36是输入字段左侧的静态前缀。

我一直在尝试,->setLeftTitle('+36')但似乎没有任何效果。

顺便提一句。->setRightTitle('something')- 我希望在输入字段的右侧附加一个标签,与->setDescription().

我很困惑。那么有什么方法可以实现我想要的吗?

4

2 回答 2

3

使用FieldGroup 类

public function getCMSFields($fields) {
    $fields = parent::getCMSFields($fields);

    $fields->addFieldToTab('Root.Main',
        FieldGroup::create(
            new HeaderField('+36'),
            new TextField('PhoneNumber','')
        )->setTitle('Telephone number')
    );

    return $fields;
}

出于美观的原因,我个人会使用两个 TextField,并在 TelephonePrefix 上执行一些验证。

于 2014-03-23T22:33:56.763 回答
2

默认模板不呈现左标题。为此,您可能需要创建一个自定义表单域模板(称为FormFieldLeftTitle.ss)或其他东西,并$LeftTitle在适当的位置包含:

<div id="$Name" class="field<% if $extraClass %> $extraClass<% end_if %>">
    <% if $Title %><label class="left" for="$ID">$Title</label><% end_if %>
    <div class="middleColumn">
        $LeftTitle
        $Field
    </div>
    <% if $RightTitle %><label class="right" for="$ID">$RightTitle</label><% end_if %>
    <% if $Message %><span class="message $MessageType">$Message</span><% end_if %>
    <% if $Description %><span class="description">$Description</span><% end_if %>
</div>

然后,您可以调用$myFormField->setTemplate('FormFieldLeftTitle')以使用此模板。

于 2014-03-23T03:10:57.640 回答