4

我在页面中显示另一个相关模型的 CGridView view&id=n。必要的关系包含在模型文件中,一切正常。唯一的事情是,按钮CButtonColumn链接到正在打开页面的模型的适当操作,而我希望它们链接到相关模型的操作。

为了清楚地解释我的意思,这是我的代码。型号view.php:_Order

$dataProvider=new CActiveDataProvider('OrderContents', array(
'criteria'=>array(
    'condition'=>'order_id='.$model->id,
    'with'=>array('order'),
),
'pagination'=>array(
    'pageSize'=>20,
),
));

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'orders-contents-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
            'id',
            'comp_name',
            'quantity',
            'comment',
            array(
                    'class'=>'CButtonColumn',
            ),
    ),
));

因此,我希望按钮CButtonColumn链接到OrderContents模型的适当操作,而现在链接到Order模型的操作。有没有简单的方法来实现这一点?我检查了两者的 API,CButtonColumn看看CGridView我是否可以在那里获得任何灵感,但没有运气。

4

3 回答 3

3

实际上,如果您只想更改 url,您甚至不需要创建自定义按钮。查看viewButtonUrl,updateButtonUrldeleteButtonUrlCButtonColumn。

您将调整网址,如其他答案所示

于 2012-06-14T15:11:58.753 回答
2

下面是使用viewButtonUrlCButtonColumn 的属性的示例。我发现弄清楚如何提供自定义 URL 并不简单,但经过一番争论,我最终得到了它。我想我会把它分享给可能看到这个线程的其他人。请注意,生成 URL 的 PHP 作为字符串传递。真的?:

    $this->widget('zii.widgets.grid.CGridView', array(
      'id'=>'artwork-grid',
      'dataProvider'=>$dataProvider,
      'columns'=>array(
        'id',
        'artwork_id',
        'description',
        array(
          'class'=>'CButtonColumn',
          'viewButtonUrl'=>'Yii::app()->createUrl(\'admin/artwork/\'. $data->id)',
          'updateButtonUrl'=>'Yii::app()->createUrl(\'admin/artwork/update/\'. $data->id)',
          'deleteButtonUrl'=>'Yii::app()->createUrl(\'admin/artwork/delete/\'. $data->id)',
        ),
      ),
    ));

也许有更好的方法可以做到这一点。我很想看看!

于 2012-11-26T21:48:02.763 回答
1

创建自定义按钮。

array(
       'class'=>'CButtonColumn',
       'buttons'=>array(
                        'myButton'=>array(
                             'label'=>'label of the button', //hover text
                             'imageUrl'=> 'link to an image',//icon of the button
                             'url'=>'Yii::app()->createUrl("controller/action")', //target of the button
                        ),
       'template'=>'{myButton}' //and others
     ),

完整的参数列表可以在这里找到。

于 2012-06-14T11:34:31.037 回答