2013-04-18 46 views
0

控制器:Laravel創建一個表單使用默認值選擇設定

$employee = Staff::where('staff_id', '=', $id)->where('user_role', '=','Employee')->first(); 
$emp_loc = $employee->locations()->pivot()->only('loc_id'); 
$locations_list = Location::lists('address1', 'loc_id'); //get list of locations 

查看:

<!--location --> 
<div class="control-group"> 
<label class="control-label">Location</label> 
<div class="controls"> 
@if(isset($emp_loc)) 
{{ Form::select('location', $locations_list, $emp_loc) }} 
@else 
{{ Form::select('location', $locations_list) }} 
@endif 
</div> 
</div> 

第三個參數,就是要在選擇框中的默認值但它總是開始於第一價值。

源代碼:

<div class="control-group"> 
<label class="control-label">Location</label> 
<div class="controls"> 
<select name="location"><option value="1">Bethel</option><option value="2">Brooklyn</option><option value="3">Germantown</option><option value="4">Memphis</option><option value="5">Brooklyn</option></select>  </div> 
</div> 

沒有默認值設置?

+0

什麼'$ emp_loc'包含的怪異行爲?它應該包含要選擇的選項的值,比如'1'或'2'。 –

+1

是否在渲染視圖之前在控制器中包含 - > with('emp_loc',$ emp_loc)?你可以發佈你的控制器的代碼嗎? –

+0

請在您的控制器中顯示創建視圖的行,或將變量傳遞給它 - 可能有錯誤。我還建議你'var_dump' /'echo''$ emp_loc',這樣你就可以確認它確實是一個數字,它可以被設置但是'null'。 –

回答

1

這可能是一個數據庫配置問題。

返回到遷移文件並確保您的外鍵已正確設置。這是我會做正確設置它們:

Schema::create('pivot', function(Blueprint $table) { 
    $table->increments('id'); 
    $table->unsignedInteger('loc_id'); 
    $table->foreign('loc_id') 
    ->references('id')->on('location_list'); 
    ..... 
} 

Schema::create('location_list', function(Blueprint $table) { 
    $table->increments('id'); 
    ..... 
} 

而且,在Firefox中顯示不正確的selected值注意。爲了解決這個問題,你的下拉列表更改爲(在刀片):

Form::select('location', $locations_list, $emp_loc, array('autocomplete'=>'off'))

這最後一部分是火狐