自定义排序/向下Yii CGridView按钮

时间:2012-12-11 04:10:04

标签: php sql sorting button yii

所以,我想在我的CGridView中创建一个新按钮。这是&向下箭头按钮,用于排序我的文章。我已经阅读了很多关于如何制作这种按钮的内容。我已经在this link中阅读了如何使用这个CGridView按钮的维基。

现在我认为这是:

array(
                'header' => 'Action',
                'class' => 'CButtonColumn',
                'template' => '{moveup}{movedown}{view}{delete}',
                'htmlOptions' => array('style' => 'width: 68px'),
                'buttons' => array
                    (
                    'moveup' => array
                        (
                        'label' => 'Move Up',
                        'imageUrl' => Yii::app()->request->baseUrl . '/images/move_up.png',
                        'url' => 'Yii::app()->createUrl("KB/moveup", array("id"=>$data->KBID))',
                        'visible' => '$data->KBORDER == KB::model()->getMax()',
                    ),
                    'movedown' => array
                        (
                        'label' => 'Move Down',
                        'imageUrl' => Yii::app()->request->baseUrl . '/images/move_down.png',
                        'url' => 'Yii::app()->createUrl("KB/movedown", array("id"=>$data->KBID))',
                        'visible' => '$data->KBORDER == KB::model()->getMin()',
                    ),
                ),
            ),

这个在我的模型中:

    public function getMax(){
            $sql = 'SELECT MAX(KBORDER) FROM KB';
            $max = Yii::app()->db->createCommand($sql);
            $max->queryAll();
            return $max;
        }

        public function getMin(){
            $sql = 'SELECT MIN(KBORDER) FROM KB';
            $min = Yii::app()->db->createCommand($sql);
            $min->queryAll();
            return $min;

}

所有代码运行得很好。除了能见度。我想让up按钮在KBORDER值最高或位置在第一位时变为不可见。对于向下按钮,当它具有KBORDER的最低值或位置在最后位置时,它也应该是不可见的。但是,当我把那些代码放在我的'可见'中时,所有按钮都是不可见的。 所以我的问题是,如何让我的请求发生?

提前致谢

1 个答案:

答案 0 :(得分:0)

首先,queryAll返回一个数组。 Documentation。所以你应该使用queryScalar,你应该从函数返回结果,而不是命令对象。

 return $max->queryScalar();

你也可以在Yii中使用statistical query

其次,你想在按钮不在顶部或底部时显示按钮,所以你应该否定=

  

'visible'=> '$ data-> KBORDER!= KB :: model() - > getMax()',

  

'visible'=> '$ data-> KBORDER!= KB :: model() - > getMin()',