我遇到了这个问题,经过一段时间寻找一个例子,我无法弄清楚如何解决。
两个下拉选项取决于它们的值。
我有一张表' area'使用fields.yaml文件中的以下结构的值(嵌套在简单的树上工作正常):
fields:
id:
label: Número
oc.commentPosition: ''
span: auto
disabled: 1
type: number
area_id:
label: 'Parente de'
oc.commentPosition: ''
emptyOption: 'Sem valor'
span: auto
type: dropdown
area:
label: Área
oc.commentPosition: ''
span: full
required: 1
type: text
我还有另一张桌子'模数' fields.yaml中具有以下结构的值:
fields:
modulo:
label: Módulo
oc.commentPosition: ''
span: auto
required: 1
type: text
area:
label: Área
oc.commentPosition: ''
nameFrom: area
emptyOption: 'Sem valor'
span: auto
descriptionFrom: id
type: relation
在'区域'模特我:
...
public $hasMany = [
'modulos' => ['JML\Gkb\Models\Modulos']
];
在' Modulos'模特我有
....
public $belongsTo = [
'area' => ['\JML\Gkb\Models\Area']
];
我有其他模型与之前的字段有关系,两个下拉字段工作正常,没有任何过滤器,以及麻烦的字段(模数)我无法根据&#39的值找到过滤的方法;面积'下拉列表我在fields.yaml中有以下内容。
....
modulo_id:
label: mod
oc.commentPosition: ''
emptyOption: 'Sem valor'
span: auto
required: 1
dependsOn:
area
type: dropdown
tab: Geral
在我的模型PHP文件中,我已经定义了下拉列表,我有:
public function getModuloIdOptions() {
return Modulos::where('area_id', '=', $this->area)->lists('modulo', 'id');
}
这对我来说似乎是合乎逻辑的(也许不是),我也尝试过DB以及其他更多。我尝试使用dd()
来查看是否可以从第一个下拉列表中获取值,但无效。如果我尝试过滤值,则根本不显示任何值(空值除外)。
那里有任何帮助???
TIA
JL
答案 0 :(得分:5)
数据集作为第二个参数传递以获取“getOptions”方法。以下是可行的替代方法:
public function getModuloIdOptions($value, $data) {
return Modulos::where('area_id', '=', array_get($data, 'area'))->lists('modulo', 'id');
}
您可能还想尝试访问area_id
值:
public function getModuloIdOptions(){
return Modulos::where('area_id', '=', $this->area_id)->lists('modulo', 'id');
}
或area->id
值效率较低(可能需要异常处理):
public function getModuloIdOptions(){
return Modulos::where('area_id', '=', $this->area->id)->lists('modulo', 'id');
}
答案 1 :(得分:1)
我通过以下步骤解决了该下拉列表和其他具有相同目标的问题:
这解决了我的问题。
谢谢大家。