在Yii中渲染CGridView中的小部件

时间:2013-10-19 10:51:52

标签: php yii widget

我正在使用Yii框架,我遇到了问题。我在扩展文件夹中创建了一个小部件,并尝试在CGridView中渲染我的小部件。部分代码(我的网格)就是这样:

'columns'=>array(
'id',
'name',
array(
    'type'  => 'raw',
    'value' =>  $this->widget('application.extensions.jalali.gregorian2jalali',array())
),

运行时出现以下错误:

Error 500
call_user_func_array() expects parameter 1 to be a valid callback, no array or string given

问题来自哪里?

4 个答案:

答案 0 :(得分:3)

值指定不正确,它必须是这样的字符串:

'value' =>  '$this->grid->controller
     ->widget("ext.jalali.gregorian2jalali",array(),true)'

答案 1 :(得分:2)

GridViewCGridColumn中的替代呈现窗口小部件 尝试将小部件推送到像

这样的功能

例如:在Post模型(Post.php文件)中,创建一个名为gregorian2jalali()的新函数

public static function gregorian2jalali(){
 return $this->widget('application.extensions.jalali.gregorian2jalali',array());
}

然后在视图中:

'columns'=>array(
'id',
'name',
array(
    'type'  => 'raw',
    'value' =>  "Post::gregorian2jalali()"
),

答案 2 :(得分:2)


我想知道同样的事情,并为我找到了以下作品:

    <?php $this->widget('bootstrap.widgets.TbGridView',array(
         'type'=>'striped bordered condensed',
         'id'=>'jugada-grid',
         'dataProvider'=>$model->search(),
         'filter'=>$model,
         'columns'=>array(
            'id',
            'nombre',
            'descripcion',
            array(
                    'name'  => 'animacion',
                    'header'=> 'Animación',
                    'type' => 'raw',
                    'value'=> "Yii::app()->controller->widget('bootstrap.widgets.TbButton', array(
                    'label'=>'Campo',
                    'type'=>'primary',
                    'htmlOptions'=>array(
                        'id' => 'activate-field',
                        'data-toggle'=>'modal',
                        'data-target'=>'#field-popup',
                    ),
                ),true)",
            ),
            array(
                'class'=>'bootstrap.widgets.TbButtonColumn',
            ),
    ),
)); ?>

请注意,该示例基于Yii Bootstrap扩展的小部件 请注意Yii :: app() - &gt; controller-&gt;小部件...包装在“。

答案 3 :(得分:0)

当列被指定为数组时,它将用于创建网格列实例,其中“class”元素指定列类名称(如果不存在,则默认为CDataColumn)。目前,提供了这些官方列类:CDataColumn,CLinkColumn,CButtonColumn和CCheckBoxColumn。

http://www.yiiframework.com/doc/api/1.1/CGridView#columns-detail

CDataColumn中的值:将使用evaluateExpression为每个数据单元计算的PHP表达式,其结果将呈现为数据单元格的内容。在此表达式中,您可以使用以下变量: $ row行号(从零开始)。 $ data行的数据模型。 $ this列对象。 PHP表达式可以是具有值的任何PHP代码。要了解有关表达式的更多信息,请参阅php manual

只是复制粘贴它!