Почему виджет yii1 CGridView заменяет слешы в ссылке на =""?

Виджет CGridView в Yii1 представляет собой компонент, который позволяет отобразить данные в виде таблицы (grid) на веб-странице. Когда мы создаем ссылки внутри CGridView, иногда может возникнуть проблема с преобразованием символа слеша (/).

По умолчанию, CGridView использует функцию CHtml::normalizeUrl() для преобразования ссылок в формат, соответствующий стандартам URL. Эта функция автоматически заменяет все символы слеша на "", чтобы избежать конфликтов при обработке URL. Например, если ссылка содержит символ слеша, это может привести к ошибке в интерпретации URL.

Таким образом, замена символов слеша на "" в ссылке в CGridView является мерой безопасности для того, чтобы избежать ошибок в URL и обеспечить корректную обработку ссылки.

Если вам необходимо включить символ слеша в ссылку, вам следует использовать специальные функции для эскейпинга символов в URL. Например, вы можете использовать функцию CHtml::normalizeUrl() для экранирования символов слеша и сохранения их в ссылке.

Пример использования CHtml::normalizeUrl():

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $dataProvider,
    'columns' => array(
        array(
            'name' => 'Link',
            'type' => 'raw',
            'value' => 'CHtml::link("Some Link", array("controller/action", "param" => CHtml::normalizeUrl("/path/with/slash")))'
        ),
    ),
));

В этом примере мы используем функцию CHtml::normalizeUrl() для сохранения символа слеша в ссылке. Это позволяет нам корректно обрабатывать ссылку и избегать ошибок, связанных с символом слеша.

В заключение, виджет CGridView в Yii1 заменяет символы слеша на "" в ссылке для обеспечения безопасности при обработке URL. Если вам нужно использовать символ слеша в ссылке, вы должны использовать функции эскейпинга символов, такие как CHtml::normalizeUrl().