显示名称而不是ID - YII2

时间:2017-10-24 08:49:38

标签: php mysql yii2 yii2-advanced-app

在我的表单中,我有category_id,在下拉列表中显示名称但保存后显示ID,如何显示名称而不是ID?

<?= $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' => $model->category_id->getAttributeLabel('category_name'),
   'value' => $model->category_id->category_name
]

但是我收到一个错误:在整数上调用成员函数getAttributeLabel()

2 个答案:

答案 0 :(得分:2)

请在网格视图中尝试此代码。

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

答案 1 :(得分:0)

如果要在视图的任何位置显示类别名称而不是id,请尝试使用此代码 假设你有两张桌子 1. Catgeory(id,name) 2.帖子(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 -';
}

现在您可以使用categoryName?&gt;您视图中的任何位置

如果您使用的是GridView 只需将属性更改为categoryName

即可