【问题标题】:Usage of CGridView and CButtonColumn (Yii Framework)CGridView 和 CButtonColumn 的使用(Yii 框架)
【发布时间】:2012-11-02 21:28:24
【问题描述】:

我是 Yii 的初学者,正在尝试理解 CGridView 小部件。

首先我了解所有这些代码:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        "url",
        "allowRedirect",
        array(
            "name"=>"Kod",
            "value"=>array($model, "returnHTTPCode"),
            "type"=>"html"
            ),
        array(
            "class"=>"CButtonColumn",
            "template"=>"{update} {delete}",
            ),

        ),
));

现在我想将 delete 按钮的 url 更改为 http://domain.com/?r=pano/deleteSiteIn documentation,有一个deleteButtonUrl属性,我正在尝试使用它

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        "url",
        "allowRedirect",
        array(
            "name"=>"Kod",
            "value"=>array($model, "returnHTTPCode"),
            "type"=>"html"
            ),
        array(
            "class"=>"CButtonColumn",
            "template"=>"{update} {delete}",
            "deleteButtonUrl"=>"deleteSite"            
            ),

        ),
));

但我收到了Use of undefined constant deleteSite - assumed 'deleteSite' 错误。

然后我尝试使用 CButtonColumn 的 buttons 属性。

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        "url",
        "allowRedirect",
        array(
            "name"=>"Kod",
            "value"=>array($model, "returnHTTPCode"),
            "type"=>"html"
            ),
        array(
            "class"=>"CButtonColumn",
            "template"=>"{update} {delete}",
            "buttons"=>array(
                "delete"=>array(
                            "url"=>"http://localhost/sitelerimacikmi/index.php?r=panos"
                            )
                ),

            ),

        ),
));

得到同样的错误。

如何使用 CButtonColumn 的属性?

注意,英语不是我的母语,所以请尽可能使用简单的语法。

【问题讨论】:

  • 好吧,我只是解决了使用 "deleteButtonUrl"=>"'?r=pano/deleteSite'" 而不是 "deleteButtonUrl"=>"pano/deleteSite" 的问题。但仍需要明确的答案供参考。

标签: php yii cgridview cbuttoncolumn


【解决方案1】:

你可以尝试使用:

$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
    "url",
    "allowRedirect",
    array(
        "name"=>"Kod",
        "value"=>array($model, "returnHTTPCode"),
        "type"=>"html"
        ),
    array(
        "class"=>"CButtonColumn",
        "template"=>"{update} {delete}",
        "deleteButtonUrl" => "Yii::app()->createUrl('pano/deleteSite')" // <- changes here
        ),

    ),
));

另外,你可以阅读这篇文章:http://www.yiiframework.com/wiki/106/using-cbuttoncolumn-to-customize-buttons-in-cgridview/

【讨论】:

    【解决方案2】:

    如果需要指定 URL,则必须将其指定为 PHP 表达式。以下是CButtonColumn 类中删除 URL 的默认值是如何定义的,

    public $deleteButtonUrl = 'Yii::app()->controller->createUrl(
        "delete",array("id"=>$data->primaryKey)
    )';
    

    这个 url 是使用 php eval 函数评估的,在这个表达式中 $data 是当前正在渲染的模型。

    你应该使用:

    $this->widget('zii.widgets.grid.CGridView', array(
        ...
        'columns'=>array(
            ...
            array(
                'class'=>'CButtonColumn',
                'deleteButtonUrl' => 'Yii::app()->controller->createUrl(
                    "pano/deleteSite", array("id" => $data->primaryKey)
                )',
            ),
        ),
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-13
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多