2017-03-08 120 views
2

我堅持這個問題,我找不到如何解決一段時間後尋找一個例子。OCTOBERCMS下拉選項取決於其他下拉選定的值

兩個下拉選項依賴於它們的值。

我有「區域」值而確定一臺(套與簡單的樹行工作)與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 

我也有另一個表「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'] 
]; 

在「Modulos」模式,我有

.... 
public $belongsTo = [ 
    'area' => ['\JML\Gkb\Models\Area'] 
]; 

我有與先前場和兩個下拉領域沒有任何過濾好的工作關係的其他模式,以及troubleshoting場(modulos),在那裏我找不到根據「區域」下拉列表的值過濾的方法我在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

Ty爲編輯,它更清楚與他們......不幸的是,這是我的戰鬥正確地發佈代碼:(。 – JLongo

回答

4

的數據集的第二個參數,以獲得 「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'); 
} 
+0

謝謝塞繆爾...我已經嘗試過兩個snipets除了有參數...也嘗試過,但沒有用...肯定我失去了一些真正簡單的東西。我嘗試在$ this-> area_id和onther變量上做轉儲,但是當我改變第一個下拉列表的值 – JLongo

1

我解決了這個下拉的問題,其他人用相同的目標用下面的步驟:

  • 我有他們的'關係'小部件。將它們更改爲「下拉式」小部件。
  • 定義'取決於'字段。
  • 將'Preset'字段定義爲上面的字段。我認爲這是沒有記錄在任何地方的問題解決方案的缺失鏈接,我在嘗試/錯誤的基礎上到達那裏(可能將此添加到10月文檔中很有價值)。
  • 在我的問題結尾或塞繆爾答案的第二個snipet過濾snipet代碼選項。

這解決了我的問題。

謝謝大家。

+0

如果您認爲文檔中缺少某些內容,請在此處打開相應的問題:https://github.com/octobercms/docs/issues – Meysam

相關問題