管理ビューに情報を表示する新しいウィジェットを作成しました。最終的なビューは CGridView と同じである必要がありますが、列のロジックが異なります。CButtonColumn 列を呼び出そうとする場合を除いて、すべて正常に動作します。
foreach ($this->columns as $column) {
if (is_array($column) && isset($column['class']) {
$this->renderColumnWidget($column);
}
}
/* ... */
protected function renderColumnWidget($column)
{
$widgetClass = $column->class;
unset($column->class);
if (strpos($widgetClass, '.') === false) {
$widgetClass = 'zii.widgets.grid.'.$widgetClass;
}
$this->widget($widgetClass, $column); // Error from here
}
基本的にここでは、列にクラス属性があるかどうかを確認し、そのウィジェットを呼び出します。しかし、私はエラーが発生します:CButtonColumn and its behaviors do not have a method or closure named "run".
私は何を間違っていますか?CButtonColumn にはrun
メソッドがなく、このクラスを拡張したくありません。