php - Silverstripe 4 SiteConfig 徽标图像未显示在模板中
问题描述
我为徽标上传创建自定义字段,SiteConfig
并在上传徽标Settings
并尝试在.ss
模板中呈现它之后。渲染后模板中没有显示任何内容。我使用的这段代码Silverstripe v3
一切正常。现在在v4
不工作。
这是我的Extension
:
class SiteConfigExtension extends \SilverStripe\ORM\DataExtension
{
private static $db = array (
'FacebookLink' => 'Varchar',
'TwitterLink' => 'Varchar',
'GoogleLink' => 'Varchar',
);
private static $has_one = array(
'Logo' => Image::class,
'DefaultImage' => Image::class
);
public function updateCMSFields(FieldList $fields)
{
parent::updateCMSFields($fields);
$fields->addFieldsToTab('Root.Social', array (
TextField::create('FacebookLink','Facebook'),
TextField::create('TwitterLink','Twitter'),
TextField::create('GoogleLink','Google'),
));
$fields->addFieldsToTab('Root.Main', array(
$logo = UploadField::create('Logo', 'Logo'),
$defaultImage = UploadField::create('DefaultImage', 'Default Image'),
));
$logo->setFolderName('Logo');
$defaultImage->setFolderName("Settings");
}
}
这是我的模板文件header.ss
:
<% with $SiteConfig %>
<div style="display: inline-block;">
<div style="float: left;">
<h1 id="logo">
<% if $Logo %>
<a>$Logo.SetWidth(50)</a>
<% end_if %>
</h1>
</div>
<div id="logo-tagline" style="float:left;">
<% if $Title %>
<h1>$Title</h1>
<% end_if %>
<% if $Tagline %>
<strong>$Tagline</strong>
<% end_if %>
</div>
</div>
<% end_with %>
我想念什么?我做错了什么?感谢您的回答。
解决方案
图像在 SilverStripe 4 中进行了版本控制,因此您需要确保在保存 SiteConfig 对象时发布图像。
您没有提及您使用的是哪个版本的 SilverStripe 4 -到目前为止,此问题已在 4.1.2 和 4.2.0-beta1 中进行了研究。这意味着如果您将所有权 API应用于这些相关对象,那么它们将在保存 SiteConfig 模型时自动发布,例如:
private static $owns = ['Logo', 'DefaultImage'];
如果您使用的是 SilverStripe 4.1.2 或更新版本,那么以上就是您需要做的所有事情。
对于早于此的版本,您可以在 SiteConfigExtension 中实现自己的钩子:
public function onAfterWrite()
{
if ($this->owner->Logo()->exists()) {
$this->owner->Logo()->publishSingle();
}
// ... same for other has_ones that are versioned
}
推荐阅读
- javascript - querySelectorAll 和 getElementsByClassName 无法在谷歌日历页面上选择元素
- php - 2次,相同格式不计算
- python-typing - 如何在 Python 中创建类似 Haskell 的求和类型?
- c# - 通过名称获取类的实例
- python-3.x - 在python中使用多线程请求图像时出现操作系统错误
- python - 牛顿法收敛但我得到无界错误
- css - 绝对定位元素内的图像
- c# - 检查俱乐部系统中用户的多个角色
- git - 即使在 Azure DevOps 中连接到项目后,也无法看到更改分支拉取请求同步
- c++ - 一次读取一个文件时出现一个错误