Silverstripe 如何用图像填充Silvertripe 3.1 Gridfield

Silverstripe 如何用图像填充Silvertripe 3.1 Gridfield,silverstripe,Silverstripe,如何使用外部Url中的图像填充Gridfield? 我可以用实际的url文本填充gridfield,甚至类似于,但是如何渲染它,使其实际显示图像呢 class GalleryPage extends Page ... $list = $this->getListofImages(); $grid = new GridField('GridFieldName', 'Gallery of', $list); $config = $grid->getConfig()

如何使用外部Url中的图像填充Gridfield? 我可以用实际的url文本填充gridfield,甚至类似于
,但是如何渲染它,使其实际显示图像呢

class GalleryPage extends Page
...
    $list = $this->getListofImages();
    $grid = new GridField('GridFieldName', 'Gallery of', $list);
    $config = $grid->getConfig();
    $dataColumns = $config->getComponentByType('GridFieldDataColumns');
    $dataColumns->setDisplayFields(array(
        "Image" => "Image",
        'Title' => 'Title', 'Tags' => "Tags",
        'Url' => "Url", 'ThumbUrl' => 'ThumbUrl'));

    $fields->addFieldsToTab('Root.ImportGallery', array( $grid ));
我只是在管理中使用这个,所以我没有使用模板文件。
“图像”是我想显示实际图像的地方。

您可以尝试以下方法

$dataColumns->setFieldFormatting(array(
    "Image" => function($value, $item) {
        return '<img src="' . $item->getAbsoluteURL() . '"/>';
    }
);
$dataColumns->setFieldFormatting(数组)(
“图像”=>函数($value,$item){
返回'getAbsoluteURL()'“/>';
}
);

您可能需要调整url的提取方式,这取决于$list是由什么组成的,但这正是您的想法。

多亏了jfbarrois,以下是答案-

$dataColumns->setFieldFormatting(array(
    "Image" => function($value, $item) {
        return '<img src="' . $item->Image . '"/>';
}
));
$dataColumns->setFieldFormatting(数组)(
“图像”=>函数($value,$item){
返回“图像”。“/>”;
}
));

$item->Image
这是一个url字符串,不是实际的图像。也可以在原始代码中使用
$item->url
$item->ThumbUrl

谢谢你的回答,它不起作用,但是它帮助我找到了答案。因为“Image”只是问题中的url字符串,所以答案只是c使用上面的示例更改返回-返回“Image.”“>”;或者可以使用$result=“ThumbUrl.”“>”;因为它也是一个url字符串。非常感谢!