2016-06-23 31 views
3

我有一個設計的模板上從客戶端的Photoshop。我的審訊......當我看到模板是:我可以並排放置兩個字段嗎?我想在一行上有f_firstname和f_lastname ...是否有注入標籤或代碼片段類如ex:div =「column1of2」 $ field_here close div有2列2個字段?Silverstripe更好的形式在模板上尋找

實際上,代碼生成每個字段都在分隔行上。這不是很漂亮。可能?

我有這樣的代碼:

private static $allowed_actions = array(
    'FormInfolettre' 
); 

public function FormInfolettre() { 
    $fields = new FieldList(
     EmailField::create('f_email', 'Votre courriel'), 
     TextField::create('f_firstname', 'Votre prénom'), 
     TextField::create('f_lastname', 'Votre nom'), 
     TextField::create('f_message', 'Votremessage'), 
); 

    $actions = new FieldList(
     FormAction::create("Soumettre")->setTitle("Soumettre") 
    ); 

    $required = new RequiredFields(
     array(
      'f_email', 
      'f_firstname', 
      'f_lastname', 
      'f_message', 

     )); 

    $form = new Form($this, 'FormInfolettre', $fields, $actions, $required); 

    return $form; 
} 

回答

3

您可以創建FieldGroups爲div容器和add extra css classes to the fields

$fields = FieldList::create(); 

$firstName = TextField::create('FirstName','First Name')->addExtraClass('small-8 medium-4 large-5 columns'); 
$surname = TextField::create('Surname','Surname')->addExtraClass('small-12 medium-5 large-5 columns'); 

$nameGroup = FieldGroup::create($firstName, $surname); 

$fields->push($nameGroup); 
+0

謝謝@wmk!這很好用! – StefGuev

+0

@NewbieSSProgrammer感謝您修復我的答案中的錯誤;) – wmk

+0

沒問題!你幫我,我會幫你;) – StefGuev

1

我一直使用的形成SilverStripe模板喜歡。爲此,我們需要使用的模板函數來定義模板。用下面的代碼中,我們的模板名稱設置爲MyForm的

<?php 

class MyForm extends Form { 
    function __construct($controller, $name) { 
     ... 
    } 

    function forTemplate() { 
     return $this->renderWith(array(
      $this->class 
     )); 
    } 
} 

我們THEMENAME創建MyForm.ss模板/模板/包括

表單佈局會是這樣的:

<form $FormAttributes> 

<% loop $Fields %> 
    <% if $Message %><p style="color:red; padding: 0 0 3px 0; margin:0">$Message</p><% end_if %> 
<% end_loop %> 

<% if $Message %> 
    <p id="{$FormName}_error" class="message $MessageType">$Message</p> 
<% else %> 
    <p id="{$FormName}_error" class="message $MessageType" style="display: none"></p> 
<% end_if %> 

$Fields.FieldByName(SecurityID) 

<div class="row"> 
    <div class="large-6 medium-6 small-12 columns"> 
    $Fields.FieldByName(FirstName) 
    <small class="error">Please enter your first name</small> 
    </div> 

    <div class="large-6 medium-6 small-12 columns"> 
    $Fields.FieldByName(Surname) 
    <small class="error">Please enter your surname</small> 
    </div> 
</div> 

<div class="typographyr"> 
    <button class="button">Submit</button> 
</div> 

</form> 
+0

嗨@Gavin布魯斯,對於像我這樣的初學者來說,這似乎很複雜。我將MyForm.ss理解爲模板,但是,函數__construct下的三個點中的代碼是什麼?我很好奇你的代碼。 ;) – StefGuev

+0

3個點只是缺少代碼。它在哪裏創建你的領域是在形式和任何其他你需要的位。 –

+0

是的,我知道。我問你是否有一個表單函數的例子放在* function __construct *之下。 – StefGuev