我们有一个包含两个字段的对象-一个是Text
,另一个是HTMLText
:
private static $db = [
'Question' => 'Varchar(255)',
'Answer' => 'HTMLText'
];
我们正在使用Gridfield
在DataColumns
中引用该对象:
$questionsGrid = GridField::create(
'Questions', 'Questions',
$this->Questions(),
GridFieldConfig_RelationEditor::create()
);
$dataColumns = $questionsGrid->
getConfig()->getComponentByType(GridFieldDataColumns::class);
$dataColumns->setDisplayFields([
'Question' => 'Question',
'Answer' => 'Answer'
]);
$dataColumns->setFieldCasting([
'Question' => 'Text',
'Answer' => 'HTMLText'
]);
然而,Answer
列显示为原始HTML-具有可见标签且无格式。
<p>The answer to life the universe & everything is 42.</p><p>A second paragraph for good measure.</p>
我们如何将Answer
列显示为格式化的HTML?
答案 0 :(得分:3)
您可以在该列中使用'HTMLFragment->RAW'
$dataColumns->setFieldCasting([
'Question' => 'Text',
'Answer' => 'HTMLFragment->RAW'
]);
答案 1 :(得分:0)
如果您想修改在 GridField 中呈现为一行的 DataObject
子类上的方法以实现相同的目的,只需将其强制转换为 HTMLText
:
/**
* @return HTMLText
*/
public function ImageNice(): \HTMLText
{
$image = '<img src="/path/to/foo.png" />';
return \DBField::create_field(\HTMLText::class, $image);
}