4

$dataCButtonColumn から変数にあるモデルにアクセスする方法はありますか? 以下のコードは機能しません。

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

jquery から可視属性にアクセスできます。

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

$dataCButtonColumn クラスで許可される 唯一のフィールドはurlとです。ID を JavaScript のクリック イベントに渡すには、そのような ID を URL に配置し、DOM から取得します。これは非常に失礼なハックですが、実装は簡単です。imageUrlvisible

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 に答える
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 に答える