SilverStripe Image DataObject在创建后不可用

时间:2015-09-16 05:18:18

标签: silverstripe

我有这个代码,它基于添加到文件系统但尚未在数据库中的新文件创建新图像:

$image = Image::create();
$image->Filename = 'assets/Art/e3434cc7-d348-491a-9dc8-325af3d9086d.jpg';
$image->write();

$images = Image::get();
$image = $images->last();

$vd = new ViewableData();
$ad = new ArrayData(array(
   'Image' => $image
));
$strHTML = $vd->customise($ad)->renderWith('Art');

Art.ss 仅包含$Image.SetWidth(100)

忽略查询没有通过ID或其他任何内容查找的事实...如果我在创建后从数据库中检索图像,为什么图像只会呈现为$strHTML?如果我删除下面的代码,则$strHTML为空:

$images = Image::get();
$image = $images->last();

1 个答案:

答案 0 :(得分:1)

有一个可用的setter所以单独使用它可能会有所帮助,但您也可能需要将父文件夹的ID分配给该对象:

$pFolder = Folder::find_or_make('Art');
if ($pFolder) {
    $image->setParentID($pFolder->ID);
    $image->setFilename('assets/Art/e3434cc7-d348-491a-9dc8-325af3d9086d.jpg');
}