2012-07-30 4 views
0

데이터베이스 테이블에서 두 개의 필드 값을 가져와 결합하여 레이블의 표시 텍스트로 사용하려고합니다. 또한 테이블의 다른 필드 값을 레이블 ID로 지정하려고합니다.cakephp의 사용자 정의 레이블 텍스트

AgeCat 테이블에는 다양한 연령 카테고리가 저장됩니다.

age_cat_id=>1 
range_start=>18 
range_end=>24 

내가 원하는 것은 레이블 텍스트가 ' "RANGE_START"을 "RANGE_END"'로 설정하는 것입니다 예 : '18 ~ 24 '

테이블 정의는

age_cat_id ---> primary key 
range_start 
range_end 

예입니다

이고 레이블 ID는 age_cat_id입니다.

위와 같이 표시하기 위해 레이블 텍스트를 포맷하는 올바른 방법은 무엇입니까? AgeCat 테이블의 모든 레코드를 검색하여 find (all)를 사용하여 문자열 배열 ($ agecats)에 저장했습니다. 해당 배열에서 값을 검색하는 데 문제가 있으며 위의 방법에 따라 형식을 지정하고 레이블 텍스트로 설정하십시오. 더 좋은 방법이 있는지 제안하십시오.

AgeCat 테이블의 각 레코드를 'range_start to range_end'형식으로 표시하지만 값은 해당 age_cat_id로 설정됩니다. 예 : 일부 양식 요소를 사용하여 18-24가 표시되지만 값은 1이어야합니다. 맞춤 문자열이있는 드롭 다운 목록이 있지만 각각 고유 값에 연결된 것과 같습니다. 따라서 옵션을 선택하면 문자열이 아닌 값이 전달됩니다.

레이블이 충분하지 않으면 어떤 형식 요소가 적합합니까?

답변

2

가상 필드 : 기본 키가 ID를 지정해야합니다 CakePHP의 규칙에 따라 cakephp documentation.

public $virtualFields = array(
'cat_date' => 'CONCAT(AgeCat.range_start, " to ", AgeCat.range_end)' 
); 

P.S :.

편집 :이 같은 컨트롤러 뭔가에 form helper

echo $this->Form->select('id', $cat_date) 

:이 봐 $와

$cat_date=$this->Model->find('list',array('fields'=>array('id','cat_name'))); 

은 선택에서 원하는 값을 포함하는 배열을 cat_date.

+0

답변 해 주셔서 감사합니다. 죄송합니다. 곧 다시 연락 드릴 수 없어요. 이렇게하면 필드 목록에 'cat_date'컬럼이 알려지지 않은 오류가 발생합니다. 이제 가상 필드의 개념을 이해하고 있지만이 오류로 인해 다시 붙어 있습니다. – user1563210

+0

foreach 루프를 사용하여 레이블을 사용하여이를 수행하는 방법. 또한 cat_id를 레이블의 ID로 저장합니다. – user1563210

관련 문제