从 Yii 2 中的数组中提取数据
Extracting data from array in Yii 2
我正在尝试从数据库中获取数据并将其显示在菜单中。
echo NavX::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
array_map(function ($model) {
return [
'label' => $model['param2'],
'url' => ["/users/{$model['param3']}"],
];
}, Model::find()->where(['userID' => 32])->asArray()->all()),
],
]);
但不幸的是这段代码是错误的,错误说:
Array to string conversion
还有其他方法可以解决吗?
其中一种 "Yii" 方法是使用内置 ArrayHelper
:
use yii\helpers\ArrayHelper;
...
$models = Model::find()->where(['userID' => 32])->asArray()->all();
$items = ArrayHelper::toArray($models, [
'app\models\Model' => [
'label' => function ($model) {
// Add label generation code here
},
'url' => function ($model) {
// Add url generation code here
}
],
]);
然后只需将 $items
传递到您的菜单视图即可。
官方文档:
我的猜测,未经测试:
echo NavX::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
array_map(function ($model) {
return [
'label' => $model['param2'],
'url' => "/users/{$model['param3']}", // <--- string, not array!
];
}, Model::find()->where(['userID' => 32])->asArray()->all()),
],
]);
我正在尝试从数据库中获取数据并将其显示在菜单中。
echo NavX::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
array_map(function ($model) {
return [
'label' => $model['param2'],
'url' => ["/users/{$model['param3']}"],
];
}, Model::find()->where(['userID' => 32])->asArray()->all()),
],
]);
但不幸的是这段代码是错误的,错误说:
Array to string conversion
还有其他方法可以解决吗?
其中一种 "Yii" 方法是使用内置 ArrayHelper
:
use yii\helpers\ArrayHelper;
...
$models = Model::find()->where(['userID' => 32])->asArray()->all();
$items = ArrayHelper::toArray($models, [
'app\models\Model' => [
'label' => function ($model) {
// Add label generation code here
},
'url' => function ($model) {
// Add url generation code here
}
],
]);
然后只需将 $items
传递到您的菜单视图即可。
官方文档:
我的猜测,未经测试:
echo NavX::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
array_map(function ($model) {
return [
'label' => $model['param2'],
'url' => "/users/{$model['param3']}", // <--- string, not array!
];
}, Model::find()->where(['userID' => 32])->asArray()->all()),
],
]);