2015-07-13 92 views
0
<?php 
$arrayData = myModel::all(); 
foreach($arrayData as $arrayList){ 
    $pureData = array_add($pureData, $arrayList->elementValue, $arrayList->elementText); 
} 
echo Form::select('multiSelectName', $pureData, null, array()); 
?> 
  1. 我試圖從數據庫中獲取的數據來填充值到多選場。
  2. 我想在這個多選字段中選擇一些值。

我該如何做到這一點?設置選擇的選項爲PHP多選輸入而載入

在此先感謝。

回答

2

一個解決辦法是讓所有可用的選項,並已選定,然後看看他們是否匹配,並用selected參數設置爲它創建一個select元素。

,我不認爲這可以通過使用Form幫手 (我知道這只是一個單一的值來完成,但還沒有與多個值試過)完成

獲取所有可用的選項(嘗試得到的東西來唯一識別它們像ID)

$all_options=Model::lists('id','name');

我使用列表方法將返回我的數組所有可用的ID作爲值和名稱作爲數組的鍵。

然後讓所有的選定值

$already_selected_options =Model::with('related_model')->lists('id','name');

(如果你使用的是像這樣雄辯的東西來獲取相關的ID將工作)

然後在您的視圖

<select multiple> 
@foreach($all_options as $name => $id) 
    @if(in_array($id,$already_selected_options)) 
     <option value="{{$id}}" selected>{{$name}}</option> 
     @else 
     <option value="{{$id}}">{{$name}}</option> 
    @endif 
@endforeach 
<select> 
+0

我沒有完全一樣的方式,但是你通過解決方案啓發了我。謝謝。 –

+0

沒問題,如果你認爲這個答案適合作爲解決方案,請接受:) –

+0

浪費週期。我的解決方案的工作原理也是一樣,並且讓客戶沉重負擔。我用它與樹枝模板引擎,雖然我編程企業級前端。所有服務器端成本必須始終保留。 – r3wt

0

我認爲你應該用javascript來代替,如果可能的話。它在延遲方面幾乎沒有引人注意,並且不會浪費週期服務器端。這是我最近的一個項目的一個例子。作爲獎勵,如果您在select中聲明onchange事件,它將在執行該函數後立即爲您調用它。

$('select.select-onload').each(function(index){ 
    if(typeof $(this).attr('data-selected') !== 'undefined'){ 
     if($(this).attr('data-selected') == ''){ 
      return false; 
     } 
     $(this).val($(this).attr('data-selected')); 
     //we may have a callback. lets manually invoke it. 
     if(typeof $(this).attr('onchange') !== 'undefined'){ 
      var callback = $(this).attr('onchange').replace('();','').trim(); 
      window[callback].call(window); 
     } 
    } 
}); 

用法:

<select class="select-onload" data-selected="{{id}}"> <!--whatever options value is 5 is the one that will be selected.--> </select>