0

我正在尝试添加以下功能,但是我不确定从哪里开始。任何建议、示例或方向将不胜感激。

我想在这种情况下向主模型的 cgridview 添加按钮。此模型的 cgridview 中可用的每个记录都有一个名为 lot 的唯一属性,例如 R3XSEF9

我的数据库中还有另一个辅助表/模型,其中包含具有相同批次属性的记录。但是,该表仅具有所有可能记录中的某些记录,有时会重复,并且具有一组不同的属性。

我想做的是,使用批次属性,例如我的 cgridview 中的批次 R3XSEF9,搜索辅助表以查看是否有一个或多个对应的行包含相同的批次 R3XSEF9。

如果是这样,我希望该按钮显示在我的 CButtonColumn 中并链接到辅助表的那些相应模型的视图。如果没有,我不希望出现任何按钮。

谢谢你的帮助。如果需要任何澄清,我很乐意这样做。

4

1 回答 1

1

首先,您需要使用模型类中的“关系”函数链接表。如果您在已填充的数据库关系中使用 FOREIGN KEY 约束。

SQL 语句:

CREATE TABLE Model1
(
    ...
    FOREIGN KEY(lot) REFERENCES MainModel(lot) ON UPDATE CASCADE ON DELETE RESTRICT,
    ...
)

型号类:

 class MainModel extends CActiveRecord
 {
         ...

    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'lots' => array(self::HAS_MANY, 'Model2', 'lot'),
        );
    }

然后你可以在你的网格(查看文件)中使用自定义按钮列,如下所示:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'main-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
    ...
    array(
        'class' => 'CButtonColumn',
        'template' => '{lots}',
        'header' => 'Lots',
        'buttons' => array(
            'lots' => array(
                'label' => 'Lots',
                'imageUrl' => Yii::app()->request->baseUrl.'/img/....png',
                'url' => 'Yii::app()->createUrl("controller1/lotlistbymainid", array("id" => $data->id))',
                'visible' => 'count($data->lots) > 0',
            ),
        ),
    ),

要通过“按钮”数组传递的按钮参数说明,您可以在此处找到。特别是这部分:

按钮属性

公共数组 $buttons;

附加按钮的配置。每个数组元素指定一个按钮,其格式如下:

'buttonID' => array(
    'label'=>'...',     // text label of the button
    'url'=>'...',       // a PHP expression for generating the URL of the button
    'imageUrl'=>'...',  // image URL of the button. If not set or false, a text link is used
    'options'=>array(...), // HTML options for the button tag
    'click'=>'...',     // a JS function to be invoked when the button is clicked
    'visible'=>'...',   // a PHP expression for determining whether the button is visible
)
于 2012-07-27T04:21:44.257 回答