У меня проблемы с CGridView и один пользовательский Formatter, который использует javascript. Когда CGridView запускает запрос ajax любого типа, мой Formatter, который работает с javascript, перестает работать.CGridView AjaxRequests brokes javascript custom CFormatter
Давайте попробуем один тривиальный пример:
форматере
class DFormatter extends CFormatter {
public function formatTest(){
$js = <<<EOD
console.log("test");
EOD;
$cs = Yii::app()->getClientScript();
$cs->registerScript("testjs", $js);
return false;
}
}
Вид:
<?php $this->widget('zii.widgets.grid.CGridView',
array(
'id' => 'development-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
array(
'name' => 'testField',
'type' => 'test',
),
array(
'class' => 'CButtonColumn',
),
),
)); ?>
После первого Ajax запрос, то Javascript код, используемый в форматере перестает работать, как могу ли я получить код javascript после каждого вызова ajax, сделанного CGridView Widget?
Спасибо.
Почему нет? Jacvascript и CSS используются для презентации, formatters не являются классами представления? – user1648170
Нет, форматировщики должны использоваться для структурной разметки, например, для упаковки вывода с помощью HTML-тега, который, в свою очередь, будет разработан CSS клиентом. Если вы хотите запускать JavaScript каждый раз, когда сетка закончила загрузку, это рекомендуемый способ сделать это. –