我需要在T DetailView上使用Html :: encode吗?

时间:2014-06-25 17:22:37

标签: php yii yii-chtml

我使用Yii作为PHP Framework,当我需要从数据库中显示一些信息时,我总是使用CHtml :: encode来提高安全性。

我的问题是:当我在Yii小部件上显示值时,我是否需要这样做,例如TbDetailView或TbGridView?

例如,下面的代码中是否需要CHtml :: encode?

<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
    'id',
    'nome',
    'descricao',
    'origem',
            array('label'=>'Tipo de Refeição', 'value'=>CHtml::encode($model->tipoRefeicao ? $model->tipoRefeicao->nome : '')),
            array('label'=>'Ativo', 'value'=>CHtml::encode($model->ativo ? 'Sim' : 'Não')),
),
)); ?>

1 个答案:

答案 0 :(得分:1)

CHtml::encode()函数是PHP htmlspecialchars函数的包装器,它将特殊字符编码为HTML实体。某些字符在HTML中具有特殊意义,如果要保留其含义,则应由HTML实体表示,执行转换

 - '&' (ampersand) becomes '&amp;'
 - '"' (double quote) becomes '&quot;' 
 - "'" (single quote) becomes '&#039;'   
 - '<' (less than) becomes '&lt;'    
 - '>' (greater than) becomes '&gt;'

如果DB中的那个字段可能包含这些字符,则必须对其进行编码,否则可能会破坏HTML输出,如果不是,则不需要对其进行编码