我对Silverstripe(3.1)非常陌生。我用它来收集用户的应用程序。每个用户上传一个文件,该文件稍后在CMS中有人可以下载。 名为'文档的文件有一个has_one关系。' 我想链接到GridField中的该文件。因此,经过一些搜索后,我做了下面的解决方案 - 简单,除了一个问题外,它的工作原理。
链接确实出现在GridField的正确列中,但它已经通过HTMLSpecialChars()之类的东西转换,我可以看到所有的HTML。对于生活我来说,我无法想象如何阻止它。 我想知道这种转换发生在哪里? 我怎么能绕过它?
$submissionGrid = new GridField('submissions', 'Submissions', $submission, $config );
$submissionGrid->addDataFields(array(
"Document" => function($row) {
$link = '<a href="' . $row->Document()->getAbsoluteURL() . '">Download Document</a>';
return $link;
},
));
答案 0 :(得分:2)
你非常接近。
您是否在网格域的配置上尝试了setFieldFormatting而不是addDataFields()?
$submissionGrid = new GridField('submissions', 'Submissions', $submission, $config );
$config = $submissionGrid->getConfig();
$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(array(
"Document" => function($value, $item) {
$link = '<a href="' . $item->Document()->getAbsoluteURL() . '">Download Document</a>';
return $link;
},
));
取决于提交数据对象上可用的字段,如果&#34;文档&#34;是您要添加为gridfield的自定义列的东西,您还需要使用setDisplayFields()添加它。在这种情况下,也要添加它
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(
"Document" => "Link to document"
));
答案 1 :(得分:1)
实际工作的内容:
我给了jfbarrois正确的答案,指出我,但我认为我应该发布实际工作的代码,因为我花了一段时间才找到这个答案。
它确实具有不可估量的优势,它确实可以正常工作,并且链接放置在GridField中的自定义格式列中。
$config = GridFieldConfig_Base::create();
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields($displayFields);
// Adding the custom named 'Download' column to the previously defined $displayFields
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(
array_merge($displayFields, array(
"Download" => "Link to document"
)
));
// Set the field formatting on the custom column inserting the real data from the 'Document' File Object
$config->getComponentByType('GridFieldDataColumns')->setFieldFormatting(array(
"Download" => function($value, $item) {
$link = '<a href="' . $item->Document()->getAbsoluteURL() . '">Download Document</a>';
return $link;
},
));
// Create the GridField
$submissionGrid = new GridField('submissions', 'Submissions', $submission, $config );