Has_many DetailView 中的关系
Has_many relation in DetailView
我在 gridview 中使用了以下代码,它运行良好:
['format' => 'raw',
'label' => 'Categories',
'value' => function ($data) {
$string = '';
foreach ($data['fkCategory'] as $cat) {
$string .= $cat->category_name . '<br/>';
}
return $string;
}],
这会在 table 单元格内的新行中显示所有项目的类别。但是,如果我想在 DetailView 中显示类似的内容,它是行不通的。 Detailview 给我一个错误:
Object of class Closure could not be converted to string
那么如何访问 DetailView
中的 has_many 关系?
关系如下:
public function getFkCategory()
{
return $this->hasMany(Categories::className(), ['category_id' => 'fk_category_id'])
->via('CategoryLink');
}
DetailView 不接受可调用 'value'。您需要在调用 DetailView 之前计算字符串:
$string = '';
foreach ($data['fkCategory'] as $cat) {
$string .= $cat->category_name . '<br/>';
}
...
'value' => $string,
或创建执行此操作的函数:
function getCategories() {
$string = '';
foreach ($data['fkCategory'] as $cat) {
$string .= $cat->category_name . '<br/>';
}
return $string;
}
...
'value' => getCategories(),
您甚至可以将函数放入您正在使用 DetailView 的模型 class 中,然后从那里调用它。
您"can"在DetailView中使用一个函数如下:
'value' => call_user_func(function($model){
<your_code_here>
}, $model),
我在 gridview 中使用了以下代码,它运行良好:
['format' => 'raw',
'label' => 'Categories',
'value' => function ($data) {
$string = '';
foreach ($data['fkCategory'] as $cat) {
$string .= $cat->category_name . '<br/>';
}
return $string;
}],
这会在 table 单元格内的新行中显示所有项目的类别。但是,如果我想在 DetailView 中显示类似的内容,它是行不通的。 Detailview 给我一个错误:
Object of class Closure could not be converted to string
那么如何访问 DetailView
中的 has_many 关系?
关系如下:
public function getFkCategory()
{
return $this->hasMany(Categories::className(), ['category_id' => 'fk_category_id'])
->via('CategoryLink');
}
DetailView 不接受可调用 'value'。您需要在调用 DetailView 之前计算字符串:
$string = '';
foreach ($data['fkCategory'] as $cat) {
$string .= $cat->category_name . '<br/>';
}
...
'value' => $string,
或创建执行此操作的函数:
function getCategories() {
$string = '';
foreach ($data['fkCategory'] as $cat) {
$string .= $cat->category_name . '<br/>';
}
return $string;
}
...
'value' => getCategories(),
您甚至可以将函数放入您正在使用 DetailView 的模型 class 中,然后从那里调用它。
您"can"在DetailView中使用一个函数如下:
'value' => call_user_func(function($model){
<your_code_here>
}, $model),