2017-10-24 5 views
-1

내 양식에 category_id가 있습니다. 드롭 다운에 이름이 표시되지만 저장 후 ID가 표시됩니다. ID 대신 이름을 어떻게 표시합니까?ID 대신 이름 표시 - YII2

[ 
    'label' => $model->category_id->getAttributeLabel('category_name'), 
    'value' => $model->category_id->category_name 
] 

하지만 오류를 받고 있어요 : 정수에 멤버 함수 getAttributeLabel()를 호출

답변

2

시도하십시오 내가보기에 지금까지 시도 무엇

<?= $form->field($model, 'category_id')->dropDownlist(
    ArrayHelper::map(Category::find()->all(), 'id', 'category_name'), 
    [ 
     'prompt' => 'Select Category', 
     'onchange' => '$.post("index.php?r=sub-cat/lists&id='.'"+$(this).val(), function(data) { 
       $("select#tickets-sub_category").html(data); 
      });' 
    ]); 
?> 

이있다 이 코드는 그리드보기에 있습니다.

['label'=>'Category Name', 
'value' => function ($data) { 
    return Category::findOne(['id'=>$data->category_id])->category_name; 
},] 
+0

카테고리 모델 또는 view.php입니까? – noobkoder

+0

그리드보기에서 사용하십시오 –

+0

view.php는 어떻습니까? 나는 비슷한 것을 할 것인가? 편집 : 나는 그것을 사용했지만 array_merge() 말합니다 : 인수 # 2 배열되지 않습니다 – noobkoder

0

아니면 아무 곳이나 두 테이블 1. Catgeory (ID, 이름)가 있다고 가정보기 2. 포스트 (ID, 카테고리 대신 ID의 범주 이름을 표시하려면이 코드를 시도, 당신의 포스트 모델에서 제목) 지금

public function getCategoryId() 
    { 
     return $this->hasOne(\path\to\models\Category::className(), ['id' 
     => 'category']); 
    } 
/** 
* @getCategoryName 
* 
*/ 
public function getCategoryName() 
{ 
    return $this->categoryId ? $this->categoryId->name : '- no category -'; 
} 

당신은 카테고리 이름을 사용할 수 있습니까?> 어디서나 볼

에 경우 당신의 GridView 그냥 장을 사용하는 경우 e 속성을 categoryName