【问题标题】:Yii call CButtonColumn from other widgetYii 从其他小部件调用 CButtonColumn
【发布时间】:2014-05-20 10:24:48
【问题描述】:

我创建了新的小部件以在管理视图中显示信息。最终视图必须与 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 方法,我不想扩展这个类。

【问题讨论】:

    标签: yii cgridview cbuttoncolumn


    【解决方案1】:

    您将其作为这样的功能来启动您的列

        protected function initColumns(){
            foreach($this->columns as $i=>$column) {
                if(is_string($column))
                    $column=$this->createDataColumn($column);
                else {
                    if(!isset($column['class']))
                        $column['class']='CDataColumn';
                    $column=Yii::createComponent($column, $this);
                }
                if($column->id===null)
                    $column->id=$id.'_c'.$i;
                $this->columns[$i]=$column;
            }
            foreach($this->columns as $column)
                $column->init();
        }
    

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多