2014-07-22 1 views
1

데이터베이스 값을 기준으로 열 헤더를 변경해야하는 상황에 처했습니다. 예 : 데이터베이스 값이 1 인 경우 열 이름은 'Kick Off'여야하며 2이면 열 이름은 'Tip Off'여야합니다. 다음 코드를 사용했지만 작동하지 않습니다. (당신이 속성을 지정하는 배열을 사용하는 경우 기본값) CDataColumn를 참조하면데이터베이스 값을 기준으로 yii cgridview의 열 이름을 변경하십시오.

array(
    'name' => 'date', 
    'header' => '($data->league_id==1) ? "Kick Off" : "Tip Off"', 
    'type' => 'raw', 
    'value' => 'strtoupper(date("D M d", strtotime($data->date)))', 
), 

답변

1

는 헤더 값은 문자열이며, PHP의 표현으로 평가되지 않습니다.

CDataColumn의 renderHeaderCellContent() 메서드를 살펴보면 모델의 특성 이름을 사용하는 것을 알 수 있습니다.

$this->grid->dataProvider->model->getAttributeLabel($this->name) 

그래서 나는 그것이 처음에 속한해야 어디 모델,이 배치에 문제가 표시되지 않습니다

public function attributeLabels() { 
    return array(
     'date' => '($this->league_id == 1) ? "Kick Off" : "Tip Off"', 
     ... 
+0

내가 시도했지만 $ this-> league_id가 비어 있습니다 그래서 항상 'Tip Off'를 반환합니다. 나 또한 $ this-> id와 같은 다른 속성을 비교하려고 시도했지만 비어 있습니다. 왜 그렇게해서는 안되는지 나는 모른다. –

+0

프로젝트에 대한 두 개의 다른 모델이 있다고 가정하고 있습니다. 질문에 모델 목록과 관계 목록을 게시 할 수 있습니까? –

+0

모델에는 다른 모델과의 관계가 있지만 league_id 특성은 동일한 테이블에 있습니다. 경기 일정 테이블에는 날짜와 시간이있는 여러 리그의 경기 일정이 있습니다. 특정 리그 일정을 표시 할 때 팀 이름을 표시하고 날짜와 시간을 시작해야합니다. 리그 ID를 기반으로 (날짜) 헤더를 변경해야합니다. –

관련 문제