以前にMarkDown形式CDetailView
でエンコードされたテキストを表示したいと考えています。
これは私のビューコードです:
<?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
ください。
そこで、マーキーや注入されたJavaScriptなどでいっぱいのモック投稿を作成して、それがどのように動作するかを確認しましたが、何もフィルタリングしませんでした!! 顔にアラートが表示され、マーキーはページ上を動き回って喜んでいました....
に設定する回避策を見つけましたが'type'=>'html'
、CDetailView
それを行う必要はないはずです??
そのpurifyOutput
オプションは、メソッドを呼び出すときに不要なものを除外することになっていません->transform()
か??
助けてください。