Silverstripe 更好的形式看模板
Silverstripe better form looking on templates
我有一个客户设计的 photoshop 模板。我的疑问...当我看到模板时是:我可以并排放置2个字段吗?我想把 f_firstname 和 f_lastname 放在一行上......有没有用 类 注入标签或代码片段,比如 ex: div ="column1of2" $field_here 关闭 div 为 2 个字段设置 2 列?
实际上,代码生成的每个字段都在单独的行上。那不是很漂亮。可能吗?
我有这个代码:
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;
}
我相信这可以在新版本中完成,方法是将您的字段添加到组中,然后为那些 class 添加一个 class 和 CSS,一组左对齐另一个右对齐。
或者,我前一段时间 fork 了一个旧版本的 Userforms 来完成这个。
https://github.com/helenclarko/silverstripe-userforms
您可以创建FieldGroups for the container div and 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);
我一直喜欢在表单中使用 SilverStripe 模板。为此,我们需要使用 forTemplate 函数来定义模板。使用下面的代码,我们将模板名称设置为 MyForm
<?php
class MyForm extends Form {
function __construct($controller, $name) {
...
}
function forTemplate() {
return $this->renderWith(array(
$this->class
));
}
}
我们在themename/templates/Includes
中创建了一个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>
我有一个客户设计的 photoshop 模板。我的疑问...当我看到模板时是:我可以并排放置2个字段吗?我想把 f_firstname 和 f_lastname 放在一行上......有没有用 类 注入标签或代码片段,比如 ex: div ="column1of2" $field_here 关闭 div 为 2 个字段设置 2 列?
实际上,代码生成的每个字段都在单独的行上。那不是很漂亮。可能吗?
我有这个代码:
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;
}
我相信这可以在新版本中完成,方法是将您的字段添加到组中,然后为那些 class 添加一个 class 和 CSS,一组左对齐另一个右对齐。
或者,我前一段时间 fork 了一个旧版本的 Userforms 来完成这个。 https://github.com/helenclarko/silverstripe-userforms
您可以创建FieldGroups for the container div and 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);
我一直喜欢在表单中使用 SilverStripe 模板。为此,我们需要使用 forTemplate 函数来定义模板。使用下面的代码,我们将模板名称设置为 MyForm
<?php
class MyForm extends Form {
function __construct($controller, $name) {
...
}
function forTemplate() {
return $this->renderWith(array(
$this->class
));
}
}
我们在themename/templates/Includes
中创建了一个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>