如何使用图像填充 Silvertripe 3.1 Gridfield

How to populate a Silvertripe 3.1 Gridfield With Images

如何使用来自外部 Url 的图像填充网格字段? 我可以用实际的 url 文本或什至 <img src="..."> 之类的内容填充网格字段,但我如何渲染它才能真正显示图像?

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 ));

我只在管理员中使用它,所以我没有使用模板文件。 "Image" 是我要显示实际图像的地方。

您可以尝试以下方法

$dataColumns->setFieldFormatting(array(
    "Image" => function($value, $item) {
        return '<img src="' . $item->getAbsoluteURL() . '"/>';
    }
);

您可能需要调整 url 的拉取方式,具体取决于 $list 的构成,但就是这样。

感谢 jfbarrois,这是答案 -

$dataColumns->setFieldFormatting(array(
    "Image" => function($value, $item) {
        return '<img src="' . $item->Image . '"/>';
}
));

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