【发布时间】:2015-04-10 03:05:00
【问题描述】:
在 SilverStripe 3.1 中,我试图让我的 Hello Bar 选择器的值可以被站点范围内的页面访问。
我创建了下拉字段来选择HomePage.php 上的内容,所以我在主页上引用字段值没有问题。下拉列表的值将通知 if 块运行以及填充 hello 栏的内容。
Page.php
..//
public function HelloBarSelector() {
$Selector = HomePage::get()->HelloBarSelect;
return $Selector;
}
public function ShowHelloBar($itemID = 1) {
$HelloBars = HelloBar::get()->byID($itemID);
$HelloBars = $HelloBars->HelloBarText;
return $HelloBars;
}
..//
包含/HelloBar.ss
<% if $HelloBarSelector %>
<section class="hello">
<p class="hello__text">$ShowHelloBar($HelloBarSelector)</p>
</section>
<% end_if %>
HomePage.php
..//
public function getCMSFields(){
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.HelloBar', GridField::create(
'HelloBars',
'Hello Bar Text',
$this->HelloBars(),
GridFieldConfig_RecordEditor::create()
));
$fields->addFieldToTab('Root.HelloBar', DropdownField::create(
'HelloBarSelect',
'Choose Your Hello Bar (this will be sitewide)',
HelloBar::get()->map('ID', 'HelloBarText')
)
->setEmptyString('(none)'));
return $fields;
}
..//
我在主页上使用$HelloBarSelect 访问该值没有任何问题,并且一切正常。看来问题是用我的函数访问$HelloBarSelect。
【问题讨论】:
标签: php mysql silverstripe