2013-01-15 4 views
0

내가 모델이 : 나는 UserFlag 모델에서와 경우 사용자 상태를 읽 변경 이미지 URL이

array(
    'class' => 'CButtonColumn', 
    'htmlOptions' => array("style" => 'width: 45px;'), 
    'template' => '{enable}', 
    'header' => 'management', 
    'buttons' => array(
      'enable' => array(
       'name' => 'enable', 
       'imageUrl' => Yii::app()->baseUrl."/images/ico/group.png", 
       'url' => '"#".$data->username', 
       'click' => 'js:function() { 
        if(confirm("Are you sure?")){ 
            changeUserStatus($(this).attr("href").replace("#", "")); 
           } 
          }', 
       ), 
    ), 

상태가 활성화 : 사용자, UserFlag 는 사용자/인덱스에서 CGridView에서 열을 추가 나는 1.png를 보여 주며 상태가 비활성이면 나는 2.png를 보여준다.

+2

이 답변은 당신에게 도움이 될 것입니다 : [CButtonColumn'imageUrl' param에서'$ data' var 사용하기 (http://stackoverflow.com/questions/14193234/yii-cgridview-property-cactivedataproider-abc-is-not- 정의/14193277 # 14193277) – Stu

답변

1

그래, $ data var은 불행히도 imageUrl에서 액세스 할 수 없습니다. Stu의 링크처럼 CButtonColumn에서 확장하는 것이 좋습니다.

두 개의 버튼 열을 만들어 상태에 따라 표시 할 수 있습니다. 그것은이 같은 것 그러나 활성 user_status 값이 1 없거나 이미지가 반전하려는 경우 당신은 그것을 조정해야 할 수도 있습니다 :

'enable' => array(
       'name' => 'enable', 
       'visible'=>'$data->user_status == 1' 
       'imageUrl' => Yii::app()->baseUrl."/images/ico/1.png", 
       'url' => '"#".$data->username', 
       'click' => 'js:function() { 
        if(confirm("Are you sure?")){ 
            changeUserStatus($(this).attr("href").replace("#", "")); 
           } 
          }', 
       ), 

'disable' => array(
       'name' => 'disable', 
       'visible'=>'$data->user_status == 0' 
       'imageUrl' => Yii::app()->baseUrl."/images/ico/0.png", 
       'url' => '"#".$data->username', 
       'click' => 'js:function() { 
        if(confirm("Are you sure?")){ 
            changeUserStatus($(this).attr("href").replace("#", "")); 
           } 
          }', 
       ), 

당신은 또한 당신의 CButtonColumn 템플릿에 {해제} 추가해야합니다.

코드를 반복하기 때문에 이상적이지는 않지만 적어도 클래스를 확장하지 않고도 할 수 있습니다.