Php OCTOBERCMS下拉选项取决于其他下拉列表上的选定值
我被这个问题困住了,在搜索了一段时间的示例后,我想不出如何解决这个问题 这两个下拉选项取决于它们的值 我在fields.yaml文件上有一个具有“area”值(嵌套在简单树工作ok中)的表,其结构如下:Php OCTOBERCMS下拉选项取决于其他下拉列表上的选定值,php,dropdown,octobercms,octobercms-backend,Php,Dropdown,Octobercms,Octobercms Backend,我被这个问题困住了,在搜索了一段时间的示例后,我想不出如何解决这个问题 这两个下拉选项取决于它们的值 我在fields.yaml文件上有一个具有“area”值(嵌套在简单树工作ok中)的表,其结构如下: fields: id: label: Número oc.commentPosition: '' span: auto disabled: 1 type: number area_id: label: 'Parente de' o
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
我还有另一个表'modulos'值,在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']
];
在“模”模型中,我有
....
public $belongsTo = [
'area' => ['\JML\Gkb\Models\Area']
];
我有另外一个模型,它与前面的字段有关系,两个下拉字段在没有任何过滤器的情况下工作正常,还有疑难解答字段(模),在这里我找不到基于“区域”下拉列表值进行过滤的方法。我在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()
查看是否可以从第一个下拉列表中获取值,但没有结果。如果我尝试过滤这些值,则根本不会显示任何值(空值除外)
有人帮忙吗
短暂性脑缺血发作
JL数据集作为第二个参数传递,以获取“getOptions”方法。以下是另一种可行的方法:
public function getModuloIdOptions($value, $data) {
return Modulos::where('area_id', '=', array_get($data, 'area'))->lists('modulo', 'id');
}
您还可以尝试访问区域id
值:
public function getModuloIdOptions(){
return Modulos::where('area_id', '=', $this->area_id)->lists('modulo', 'id');
}
或效率较低的区域->id
值(可能需要异常处理):
我通过以下步骤解决了该下拉列表和其他具有相同目标的问题:
- 我在它们上面有“关系”小部件。将它们更改为“下拉”小部件
- 定义了“依赖”字段
- 将“预设”字段定义为上述字段。我认为这是缺少的问题解决方案的链接,在任何地方都没有记录,我是在尝试/错误的基础上找到的(将此添加到10月份的文档中可能很有价值)。
- 在我的问题或答案的第二个snipet结尾使用snipet代码过滤选项
谢谢大家。Ty的编辑,他们的编辑更加清晰。。。不幸的是,对我来说,正确发布代码是一场战斗:(.谢谢Samuel…我尝试过两个snipet,除了带参数的snipet…也尝试过那个snipet,但没有任何效果…我确实错过了一些非常简单的东西。我尝试转储$this->area\u id和其他变量,但在更改第一个下拉列表的值时没有得到任何值。尝试转储或记录
$data
使用Debugbar插件的值。$data
属性将包含所有字段。我使用的“$data['area]”还需要在yaml文件中定义dependsOn
属性如果您认为文档中缺少某些内容,请在此处打开相关问题:
public function getModuloIdOptions(){
return Modulos::where('area_id', '=', $this->area->id)->lists('modulo', 'id');
}