1

我正在使用 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

4 回答 4

3

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

'value' =>  '$this->grid->controller
     ->widget("ext.jalali.gregorian2jalali",array(),true)'
于 2013-10-20T03:13:38.607 回答
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()->controller->widget... 包裹在 ".

于 2014-03-22T20:45:31.693 回答
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()"
),
于 2013-10-20T09:00:44.543 回答
0

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

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

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

复制粘贴就行了!

于 2013-10-19T12:51:54.577 回答