簡體   English   中英

關於 Yii CMarkdown Class

[英]Regarding Yii CMarkdown Class

我想在之前以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',
),
)); 
?>

在我的 controller 中我實例化了一個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 以查看它的行為方式並且它根本沒有過濾任何東西.. 我的臉上收到了警報並且選取框很高興在頁面上四處移動。 ...

我找到了一種解決方法,即在CDetailView中設置'type'=>'html' ,但我不需要這樣做,對嗎?

當我調用->transform()方法時, purifyOutput選項不應該為我過濾掉不需要的東西嗎?

請幫忙。

要凈化 output,您需要使用CMarkdown::processOutput ,而不是transform方法(該方法更底層,不purifyOutput )。

如果仔細查看文檔,您會注意到processOutput 提到purifyOutput設置,而transform 沒有 查看源代碼證實了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM