2012-04-09 3 views
0

CDetailViewのテキストを、MarkDownの形式で以前にエンコードしたものを表示したいとします。YiiについてCMarkdownクラス

これが私の見解コードです:私は明示的にtruepurifyOutputを設定する方法

private $_markdown = null; 

    public function getMarkdown() 
    { 
      if ($this->_markdown === null) 
      { 
        $this->_markdown = new CMarkdown(); 
        $this->_markdown->purifyOutput = true; 
      } 
      return $this->_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フィルタをインスタンス化します。

私はマーキーと注入されたjavascriptのようなものでいっぱいのモックポストを作って、それがどのように振る舞い、何もフィルタリングしなかったのを見ました!私は私の顔に警告を受けて、マーキーはページ上で動き回って満足していた。

'type'=>'html'を設定するという回避策が見つかりましたが、私はそれをする必要はありません。 ??

私は->transform()メソッドを呼び出すと、purifyOutputオプションは私のために不要なものをフィルタリングすることになっていますか?

何か助けてください。

答えて

1

出力を浄化するには、transformメソッドではなく、CMarkdown::processOutputメソッドを使用する必要があります(低レベルであり、purifyOutputを守らないでください)。

あなたは慎重にドキュメントを見ればtransformdoes notながら、あなたはmentionsprocessOutputそのpurifyOutput設定がわかります。ソースを表示するとこれが確認されます。

関連する問題