Нужно ли использовать CHtml::encode в TbDetailView?

Я использую 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 ответ

Решение

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;'

Это означает, что если в этом поле в БД есть какие-либо из этих символов, вам придется его кодировать, в противном случае оно может нарушить вывод HTML, если этого не произойдет, тогда нет необходимости кодировать его.

Другие вопросы по тегам