我想安排好我的代码。我有这个,由giiant生成:
$form->field($model, 'land_id')->dropDownList(ArrayHelper::map(app\models\Land::find()->orderBy('name')->all(), 'id', 'name'), [
'prompt' => Yii::t('app', 'Select'),
'disabled' => (isset($relAttributes) && isset($relAttributes['land_id'])),]);
有人在stackoverflow上告诉我,这不是很好。所以我想转移这部分:
ArrayHelper::map(app\models\Land::find()->orderBy('name')->all(), 'id', 'name'
进入模型。这同样适用于网格过滤器下拉列表:
'filter' => ArrayHelper::map(\app\models\base\Land::find()->asArray()->all(), 'id', 'name'),
有意义吗?我想是的,我希望如此。我试图以模型Land 2的方式实现它:
public function getAllAsArray() {
return ArrayHelper::map(app\models\Land::find()->orderBy('name')->all(), 'id', 'name');
}
或
public function getAllAsArray() {
return ArrayHelper::map($this->find()->orderBy('name')->all(), 'id', 'name');
}
我想从View / Grid(Zip-Land)中调用它:
'filter' => $model->land->allAsArray,
但是我收到以下错误: 未定义的变量:模型
然后尝试了这种方式:
'filter' => function ($model) {$model->getLand()->one()->getAllAsArray();},
'filter' => function ($model) {$model->getLand()->getAllAsArray();},
然后我没有收到任何错误消息,但它也无效。
并以表格(Zip - Land)的方式相同:
$form->field($model, 'land_id')->dropDownList($model->land->allAsArray(), [
'prompt' => Yii::t('app', 'Select'),
'disabled' => (isset($relAttributes) && isset($relAttributes['land_id'])),]);
但是我收到以下错误: 在null
上调用成员函数getAllAsArray()你能指点我正确的方向吗?我想我基本上不明白,这让我感到不安。非常感谢你提前!
答案 0 :(得分:0)
土地模型
public static function getAllAsArray() {
return ArrayHelper::map(Land::find()->orderBy('name')->all(), 'id', 'name');
}
<强>索引强>
use app\models\Land;
'filter' => Land::getAllAsArray(),
<强>形式强>
use app\models\Land;
$form->field($model, 'land_id')->dropDownList(Land::getAllAsArray(), [
'prompt' => Yii::t('app', 'Select'),
'disabled' => (isset($relAttributes) && isset($relAttributes['land_id']))]);