使用CGridView创建链接

时间:2015-02-12 04:52:08

标签: php yii

我是Yii Framework的初学者,我想在CGridView中使用字段idAccounts.name链接

$post=  Sheduale::model()->search();  
    $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'users-grid',
    'dataProvider'=>$post,
    'columns'=>array(
        'idAccounts.TypeId',
        'idAccounts.name',
                'start',
                'end',
        array(
            'class'=>'CButtonColumn',
        ),
    ),
    ));

2 个答案:

答案 0 :(得分:0)

你可以这样做:

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>$post,
'columns'=>array(
    'idAccounts.TypeId',
     array(
            "header"=>"The column header",
             "value"=>function($data, $row){
                   echo "<a></a>" //you can set everything you want here
                //$data refers to each data row in the grid. you can use $data->attribute_name for access attributes of your model
              }
           )
            'start',
            'end',
    array(
        'class'=>'CButtonColumn',
    ),
),
));

我认为这会对你有帮助。

答案 1 :(得分:0)

一种选择是使用CLinkColumn。您可以将其label属性设置为您要在链接中显示的任何文本,并使用其urlExpression属性为每个链接生成URL。 urlExpression必须是包含PHP的字符串(将对其进行评估以确定链接URL应使用的内容)。例如:

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'users-grid',
    'dataProvider' => $post,
    'columns' => array(
        'idAccounts.TypeId',
        array(
            'class' => 'CLinkColumn',
            'label' => 'View details'
            'labelExpression' => '$data->idAccounts->name',
            'urlExpression' => '\Yii::app()->createUrl('
                . '"controller/action", '
                . 'array("id" => $data->idAccounts->id)'
            . ')',
            'header' => 'Some Column Header',
        ),
        'start',
        'end',
        array(
            'class'=>'CButtonColumn',
        ),
    ),
));

您需要将controller/action(在我的示例urlExpression字符串中)替换为您希望链接转到的实际Yii路由,并且与此示例中使用的示例路由参数类似。