Silverstripe 3.1 ss 模板中字段的 title/name 是否可用?
Silverstripe 3.1 Is the title/name of a field available in an ss template?
例如
static $db = array('CarName' => 'Text')
public static $summary_fields = array('CarName' => 'Car Name')
在 ss 模板中,这将显示名为 CarName 的字段的值
<p>$CarName</p>
我还可以显示我在 $summary_field 中包含的标题吗? 'Car Name' 而不是在 ss 模板中手动输入?
据我所知,没有直接访问单个摘要字段的方法。你可以写一个简单的扩展来为你做这件事。大致如下:
<?php
class SummaryExtension extends DataExtension
{
public function SummaryField($fieldName){
$fields = $this->owner->summaryFields();
if(isset($fields[$fieldName])){
return $fields[$fieldName];
}
return $fieldName;
}
}
然后通过 _config.yml
或直接作为静态变量将扩展添加到您的 DataObject:
private static $extensions = array('SummaryExtension');
在模板中,你可以输出标题:
$SummaryField('CarName')
我不知道这是否可行,但有 getName() function on DBField 所以我会尝试 $CarName.Name
写了这个有效的函数,把它放在你使用的页面的 Page_Controller -
public function getSummaryFlds() {
$getSummFlds = $this->owner->summaryFields();
$newArr = array();
foreach ($getSummFlds as $dbfield => $title) {
$value = $this->$dbfield;
$newArr[] = ArrayData::create(array('Title' => $title, 'Value' => $value));
}
var_dump($getSummFlds);
$newArray = ArrayList::create(
$newArr
);
$result = $newArray;
return $result;
}
然后在ss模板中
<% loop $SummaryFlds %>
<dt>$Title</dt><dd>$Value</dd>
<% end_loop %>
结果是带有标题和值的所有 $summary_fields。
例如
static $db = array('CarName' => 'Text')
public static $summary_fields = array('CarName' => 'Car Name')
在 ss 模板中,这将显示名为 CarName 的字段的值
<p>$CarName</p>
我还可以显示我在 $summary_field 中包含的标题吗? 'Car Name' 而不是在 ss 模板中手动输入?
据我所知,没有直接访问单个摘要字段的方法。你可以写一个简单的扩展来为你做这件事。大致如下:
<?php
class SummaryExtension extends DataExtension
{
public function SummaryField($fieldName){
$fields = $this->owner->summaryFields();
if(isset($fields[$fieldName])){
return $fields[$fieldName];
}
return $fieldName;
}
}
然后通过 _config.yml
或直接作为静态变量将扩展添加到您的 DataObject:
private static $extensions = array('SummaryExtension');
在模板中,你可以输出标题:
$SummaryField('CarName')
我不知道这是否可行,但有 getName() function on DBField 所以我会尝试 $CarName.Name
写了这个有效的函数,把它放在你使用的页面的 Page_Controller -
public function getSummaryFlds() {
$getSummFlds = $this->owner->summaryFields();
$newArr = array();
foreach ($getSummFlds as $dbfield => $title) {
$value = $this->$dbfield;
$newArr[] = ArrayData::create(array('Title' => $title, 'Value' => $value));
}
var_dump($getSummFlds);
$newArray = ArrayList::create(
$newArr
);
$result = $newArray;
return $result;
}
然后在ss模板中
<% loop $SummaryFlds %>
<dt>$Title</dt><dd>$Value</dd>
<% end_loop %>
结果是带有标题和值的所有 $summary_fields。