我想在CDetailView
中显示以前以 MarkDown 格式编码的文字。
这是我的观看代码:
<?php
$this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'title',
array(
'name'=>'text',
'type'=>'raw',
'value'=>$this->markdown->transform($model->text)
),
'author_id',
'date_added',
),
));
?>
在我的控制器中 和,我实例化CMarkDown
过滤器,如下所示:
private $_markdown = null;
public function getMarkdown()
{
if ( $this->_markdown === null)
{
$this->_markdown = new CMarkdown();
$this->_markdown->purifyOutput = true;
}
return $this->_markdown;
}
注意我如何将purifyOutput
明确设置为true
。
所以我创建了一个模拟帖子,里面装满了像marquee这样的东西,并注入了javascript来查看它的行为方式,它根本没有过滤任何东西!我的脸上有一个警报,那个大帐篷很高兴在页面上移动......
我找到了一个解决方法,即在'type'=>'html'
中设置CDetailView
,但我不应该这样做,我应该吗?
当我调用purifyOutput
方法时,是不是->transform()
选项应该为我过滤掉不需要的东西?
请帮助。