我正在通过开发一个简单的项目来学习 SilverStripe。现在我在模板文件中显示图像时遇到问题。
这是我的 BlogPage.php
<?php
namespace {
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\Image;
class BlogPage extends Page
{
private static $can_be_root = false;
private static $has_one = [
'Banner' => Image::class,
];
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Attachments', $banner = UploadField::create('Banner'));
$banner->setFolderName('banners');
return $fields;
}
}
}
我可以在管理面板中上传横幅图片。我正在尝试像这样在 BlogPage.ss 中显示图像。
<% with $Banner.ScaleWidth(750) %>
<img class="my-custom-class" src="$URL" alt="" width="$Width" height="$Height" />
<% end_with %>
但它没有显示任何东西。当我在控制台中检查 URL 时,它是(未知的)。怎么了?如何显示图像?
编辑
我根据下面罗比的回答编辑了问题。
这是我的 BlogPage.php
<?php
namespace {
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\Image;
class BlogPage extends Page
{
private static $can_be_root = false;
private static $has_one = [
'Banner' => Image::class,
];
private static $owns = [
'Banner',
];
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Attachments', $banner = UploadField::create('Banner'));
$banner->setFolderName('banners');
return $fields;
}
}
}
这是我的 BlogPage.ss
<% with $Banner %>
<img class="my-custom-class" src="$URL" alt="" width="$Width" height="$Height" />
<% end_with %>
<h3>$Title</h3>
$Content