Я просто пытаюсь переопределить класс CGridColumn, но почему-то его не переопределяет.Класс переопределения CGridColumn
мой код ниже
<?php
Yii::import('zii.widgets.grid.CGridColumn');
class CGridColumnCustom extends CGridColumn
{
// new variable that will bind near header
public $headerFilter;
public function renderHeaderCell()
{
$this->headerHtmlOptions['id']=$this->id;
echo CHtml::openTag('th',$this->headerHtmlOptions);
$this->renderHeaderCellContent();
$this->renderFilterHeaderCellContent();
echo "</th>";
}
#------------------------------------------------------------------------------------
# custom function that will concat with renderHeaderCellContent at renderHeaderCell
#------------------------------------------------------------------------------------
protected function renderFilterHeaderCellContent()
{
echo trim($this->headerFilter)!=='' ? $this->headerFilter : $this->grid->blankDisplay;
}
}
?>
и я добавил этот файл (CGridColumnCustom.php) в папке компонентов и я также импортировал этот файл в CustomerModule.php файл, как показано ниже
$this->setImport(array(
'customer.components.*',
));
но когда я пытаюсь реализовать свою пользовательскую функцию, как показано ниже в файле вида
'columns'=>array(
array(
'name' => 'Name',
'value' => '$data->Name',
'type' => 'raw',
'headerFilter'=> '<span class="name-filter-head" onclick="alert(\'test\');"> CustomFilter</span>',
),
затем оно ниже будет
Свойство "CDataColumn.headerFilter" не определено.
Но если я непосредственно добавил эти изменения в файл ядра в CGridColumn.php в gii.widgets.grid то его работает нормально, но я не хочу, чтобы изменить в базовом файле.
В отличие от сайтов форума, мы не используем «спасибо» или «Любая помощь приветствуется», или подписи на [так] См «[Должен„Привет“,„спасибо,“слоганы, и. приветствия удаляются с должностей?] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-sa lutations-быть удалены, от-сообщений). Кстати, это «Спасибо заранее», а не «Спасибо в продвинутый». –
Вы не говорите GridView, чтобы использовать свой настраиваемый столбец, поэтому он использует CDataColumn по умолчанию (у которого нет заголовка headerFilter). Вы должны указать «класс», как в ответе ниже. Возможно, вы должны указать полный путь, то есть '' class '=>' ext.CGridColumnCustom ', '(или где вы его разместили). Что-то в этих строках – Viacheslav
@snegostup я также пробовал с '' class '=>' CGridColumnCustom'', и я добавил этот CGridColumnCustom.php в свою папку компоновщиков. мне нужно положить его в папку расширения? –