如何使用图像填充 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
。
如何使用来自外部 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
。