如何使用图像填充Silvertripe 3.1网格域

时间:2016-02-23 10:01:56

标签: silverstripe

如何使用外部网址中的图像填充网格域? 我可以使用实际的url文本填充gridfield,甚至可以填充<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 ));

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

2 个答案:

答案 0 :(得分:2)

您可以尝试以下

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

您可能需要调整网址的提取方式,具体取决于$ list的构成,但这就是主意。

答案 1 :(得分:1)

感谢jfbarrois,这是答案 -

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

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