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;
}

個人的には、見た目の理由から 2 つの 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 に答える