4

$data有什么方法可以从 CButtonColumn访问位于变量中的模型吗?下面的代码不起作用。

array(
'class' => 'CButtonColumn',
'template' => '{test}',
    'buttons' => array(
        'test' => array(
            'label' => 'Select',
            'click' => 'js:function() { <b>alert($data->_id);</b> return false;}',
        ),
    ),
),
4

5 回答 5

5

CButtonColumn 类中唯一$data允许的字段是 url,imageUrlvisible。要将 id 传递给 javascript click 事件,您可以将此类 id 放在 url 中并从 DOM 中获取它。这是非常粗鲁的 hack,但易于实施。

array(
    'class' => 'CButtonColumn',
    'template' => '{test}',
    'buttons' => array(
        'test' => array(
            'label' => 'Select',
             /* set id */
            'url' => $data->id, 
             /* retrieve id from this DOM element (jQuery) */
            'click' => 'function() { alert( $(this).attr("href"); return false;}',
        ),
    ),
),

如果您正在寻找更清晰的编码,您可以在 CDataColumn 类中工作

于 2013-03-12T00:29:33.473 回答
5

可以从 jquery 访问可见属性:

'click'=>'js:function(){alert("first element in cgridview is"+$(this).parent().parent().children(":nth-child(1)").text());}'
于 2012-02-28T22:50:20.267 回答
1

看起来 _id 是一个私有变量(根据 Yii 的编码“标准”)。您不能访问对象之外的私有变量(和方法)。在你的模型中创建一个像这样的 getter 方法:

public function getId() {
  return $this->_id;
}

然后将您的代码更改为:

array(
    'class' => 'CButtonColumn',
    'template' => '{test}',
        'buttons' => array(
            'test' => array(
                'label' => 'Select',
                'click' => 'js:function() { alert($data->id); return false;}',
            ),
        ),
),
于 2011-04-04T19:59:38.340 回答
0

您需要自定义 CButtonColumn 类。看看这个帖子:

http://www.yiiframework.com/wiki/714/yii-1-1-cgridview-use-special-variable-data-in-the-options-of-a-button-ie-evaluate-options-attribute/

于 2015-01-07T15:20:23.333 回答
0

您可以通过自定义函数来做到这一点,因为我们可以在其中派生一个 $data 变量,以便我们可以利用更好的 php 以及 yii 本身。

试试这样:

'test' => array(
          'label' => 'Select',
          'click' => function($data) {
            $id = $data->id;
            return "js:function() { alert($id); return false;}";
           },
     ),
于 2017-05-02T08:29:15.507 回答