显示名称而不是 ID - YII2
Displaying the name instead of ID - YII2
在我的表单中,我有 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()
请在您的网格视图中尝试此代码。
['label'=>'Category Name',
'value' => function ($data) {
return Category::findOne(['id'=>$data->category_id])->category_name;
},]
或者,如果你想在视图的任何位置显示类别名称而不是 id,请尝试使用此代码
假设你有两个表
1. Category(id,name)
2. Post (id, category, title)
在您的 Post 模型中
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 ?>
如果您使用的是 GridView
只需将属性更改为 categoryName
在我的表单中,我有 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()
请在您的网格视图中尝试此代码。
['label'=>'Category Name',
'value' => function ($data) {
return Category::findOne(['id'=>$data->category_id])->category_name;
},]
或者,如果你想在视图的任何位置显示类别名称而不是 id,请尝试使用此代码 假设你有两个表 1. Category(id,name) 2. Post (id, category, title) 在您的 Post 模型中
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 ?>
如果您使用的是 GridView 只需将属性更改为 categoryName