从 cgridview 中的按钮访问 $data 变量

发布于 2024-10-30 04:58:37 字数 377 浏览 2 评论 0原文

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

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

Is the any way, to access model located in $data variable from CButtonColumn?
Below code is not working.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

不必了 2024-11-06 04:58:37

可以从 jquery 访问可见属性:

'click'=>'js:function(){alert("first element in cgridview is"+$(this).parent().parent().children(":nth-child(1)").text());}'

It is possible to access visible attributes from jquery:

'click'=>'js:function(){alert("first element in cgridview is"+$(this).parent().parent().children(":nth-child(1)").text());}'
暗藏城府 2024-11-06 04:58:37

CButtonColumn 类中唯一允许使用 $data 的字段是 urlimageUrl< /code>可见。要将 id 传递给 javascript 点击事件,您可以将此类 id 放入 url 中并从 DOM 中获取它。这是非常粗鲁的黑客,但很容易实现。

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 类中工作

The only field where $data is allowed in CButtonColumn class is url, imageUrl and visible. To pass id to the javascript click event you may place such id in the url and grab it from the DOM. This is very rude hack but easy implementation.

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;}',
        ),
    ),
),

If you are looking for a more clear coding you could work in CDataColumn class

七分※倦醒 2024-11-06 04:58:37

看起来 _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;}',
            ),
        ),
),

It looks like _id is a private variable (according to Yii's coding "standards"). You can not access private variables (and methods) outside of an object. Create a getter-method like this in your model:

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

and then change your code to:

array(
    'class' => 'CButtonColumn',
    'template' => '{test}',
        'buttons' => array(
            'test' => array(
                'label' => 'Select',
                'click' => 'js:function() { alert($data->id); return false;}',
            ),
        ),
),
聆听风音 2024-11-06 04:58:37

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

尝试这样:

'test' => array(
          'label' => 'Select',
          'click' => function($data) {
            $id = $data->id;
            return "js:function() { alert($id); return false;}";
           },
     ),

You can do that by custom function, as we can derived a $data variable inside it so that we can utilize better php as well as yii itself.

Try like this :

'test' => array(
          'label' => 'Select',
          'click' => function($data) {
            $id = $data->id;
            return "js:function() { alert($id); return false;}";
           },
     ),
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文