2016-08-16 13 views
1

필드 중 하나의 필드 이름이 type이고이 양식이 enum('lost', 'found')이고이 필드는 해당 필드 만 드롭 다운 목록으로 만들길 원합니다. 이 두 옵션은 lostfound입니다. 제안 된 옵션
하나 보기Yii2 - db 구조에서 드롭 다운 목록 만들기 db에 삽입 된 데이터가 아닙니다

<?= $form->field($model, 'type')->dropDownList(
      $items, 
      ['prompt'=>''] 

이를 사용했다 이것을 컨트롤러

$items = ArrayHelper::map(Ads::find()->all(), 'id', 'type'); 

하지만 당신은 그냥 DB에와있는 경우 삽입 된 데이터를 사용하고 알고 드롭 다운 목록을 클릭하면 DB에있는 모든 손실되고 발견 된 옵션이로드됩니다.
yii에게 데이터 대신 DB 구조와 규칙을 사용하도록 지시 할 수있는 방법이 있습니까?

모델에서 열거 형 부분을 나타내는 규칙을 찾을 수 없다는 것을 지적해야합니다. 괜찮습니까? 왜 이런 식으로?
나는 이것을 만들기 위해 Gii를 사용했습니다.

public function rules() 
{ 
    return [ 
     [['type', 'explanation', 'image', 'cost', 'province_id', 'address'], 'required'], 
     [['type', 'explanation', 'image', 'address'], 'string'], 
     [['cost'], 'integer'], 
     [['province_id'], 'string', 'max' => 20], 
     [['province_id'], 'exist', 'skipOnError' => true, 'targetClass' => Province::className(), 'targetAttribute' => ['province_id' => 'name']], 
    ]; 
} 

답변

1

는 출원 유형을 열거이고 GII에서 CRUD를 생성 YII 자동으로 양식에 드롭 다운의 종류를 생성합니다.

public function rules() 
    { 
     return [ 
       [['type'], 'string'], 
+1

은 그게 내가 그것에 대해 무슨 짓을했는지, GII가 만든 게 아니에요 :

<?= $form->field($model, 'type')->dropDownList([ 'lost' => 'Lost', 'found' => 'Found', ], ['prompt' => '']) ?> 

은 모델에서 해당 유형은 문자열입니다. Guiti는 정상적인 방법으로 만들었습니다. ' field ($ model,'type ')?> – Amir

+0

'type '필드가 enum 데이터 유형입니까? –

+1

예,하지만 제가 말했듯이 저는 모델에서 열거 형 부분과 관련된 것이 아무것도없는 이유를 알지 못합니다. 모델에 규칙을 게시했습니다. – Amir