2013-02-24 3 views
0

내가 최근 CakePHP에서 놀아 다음과 같은 문제로 실행했습니다로 설정을 선택 텍스트 : 출력 선택CakePHP는 - 값

에 내가 다음을 수행 봤는데보기를 만들 폼 헬퍼를 사용하는 동안

: 그 다음 코드를 생성 -
echo $this->Form->input('fee', array(
     'empty' => '---', 
     'options' => array(
     __('Yes'), 
     __('No')) 
    )); 

내가 그렇게 그들은 따라서 __ ('')

로 선언하는 이유 먹으 렴, 그것은 완벽하게 작동 국제화를위한 준비가 될 때까지 문자열을 준비

<div class="input select"> 
<label for="GameFee">Fee</label> 
<select name="data[Game][fee]" id="GameFee"> 
<option value="">---</option> 
<option value="0">Yes</option> 
<option value="1">No</option> 
</select> 
</div> 

케이크는 일반적으로 ID를 값으로 사용합니다. 내가 어떻게

테이블 "게임"내부 "수수료"필드와 같은 값으로 필드 설명을 VARCHAR (100)

당신이 :)

을 도울 수 있기를 바랍니다 구성하는 케이크를 강제 할 수

답변

1

나는 그렇게하지 않을 것이다! 현재 cake는 열거 형 (enum)을 지원하지 않습니다. 그러나 해결 방법에는 여러 가지가 있으며, 그 중 일부는 일반적으로 처음에 열거 형을 사용하는 것보다 낫습니다.

귀하의 경우 왜 여기에 열거 형을 원하십니까? 그것의 명확하게 부울 값 (두 상태 : 0 또는 1, 예 또는 아니오). 그래서 나는 항상 tinyint1을 사용하여이 부울 값을 저장합니다.

낮은 비용 (전체 문자열과 비교되지 않음) 및 낮은 회귀 오류로 데이터베이스에 기본 정보 (0 또는 1)를 저장하고 출력시에만 번역/보간해야합니다 (보기에서).

실제로 두 개 이상의 명확한 상태가 필요한 경우 예를 들어 http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/을 읽으십시오.

$this->Form->input('fee', array('options' => Model::fees())); 
어쨌든

, 귀하의 질문에 대답 : 당신이 정말로 여기에 문자열을 저장해야하는 경우, 반드시이 키의 일부인하거나에 매핑 쉽게 여기 tinyint2 필드에 고집으로 당신이 원하는 것을 얻을 수 있습니다 저장하기 전에 컨트롤러에 저장하십시오.

'options' => array(
    __('Yes') => __('Yes'), 
    __('No') => __('No')) 
+0

답장을 보내 주셔서 감사합니다. 당신 말이 맞아 - 나는 tinyint 솔루션을 고려할 것이다. :). 나는 아직 프로그래밍에 익숙하지 않았기 때문에 아직 큰 지식 기반을 구축하지 못했고 모든 힌트에 대해 감사하고있다. – Dreshar