Нужно ли использовать 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 '&'
- '"' (double quote) becomes '"'
- "'" (single quote) becomes '''
- '<' (less than) becomes '<'
- '>' (greater than) becomes '>'
Это означает, что если в этом поле в БД есть какие-либо из этих символов, вам придется его кодировать, в противном случае оно может нарушить вывод HTML, если этого не произойдет, тогда нет необходимости кодировать его.