例如
static $db = array('CarName' => 'Text')
public static $summary_fields = array('CarName' => 'Car Name')
在ss模板中,这将显示名为CarName
的字段的值<p>$CarName</p>
我还可以显示我在$ summary_field中包含的标题,即。 &#39;车名&#39;而不是仅仅在ss模板中手动输入?
答案 0 :(得分:2)
据我所知,单个摘要字段没有直接访问权限。你可以写一个简单的扩展,为你做到这一点。有点像:
<?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')
答案 1 :(得分:0)
我不知道这是否有用但是getName() function on DBField所以我会尝试$ CarName.Name
答案 2 :(得分:0)
写了这个有效的函数,把它放在你使用的页面的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。