2016-12-12 52 views
0

我嘗試了很多變體的代碼,並試圖在其他主題中發現類似的問題。所以,我有桌面用戶,每個用戶都有一個城市(存儲爲一個數字),當然還有城市的ID和城市名稱(有40個城市在那裏)。 當真正的用戶打開他的個人資料設置頁面時,我希望他的城市被選中並在窗體中顯示。在用戶表中的這個例子中,「Alex」具有城市「2」。在表城市:id「2」和name_ru「cityB」。foreach Laravel-5 <option select

如果我試試這個:

@foreach(App\City::get() as $city) 
<option value='{{ $city->id }}'>{{ $city->name_ru }}</option> 
@endforeach 

它只顯示城市,但我需要的結果是這樣的:

<option value="1" > cityA</option> 
<option selected value="2" > cityB </option> 
<option value="3" > cityC </option> 

所以現在的問題是 - 如何讓只選擇了一個標籤選項, VALUE等於該城市的號碼,該號碼存儲在表格用戶的「Alex」中。

我想到了這一點,但它說明不了什麼:

@foreach(App\City::get() as $city) 
@if($user->city ==1) 
<option selected value="1" > {{ $city->name_ru }}</option> 
@elseif($user->city ==2) 
<option selected value="2" > {{ $city->name_ru }}</option> 
.... 
@endif 
@endforeach 

如果我試試這個:

@foreach(App\City::get() as $city) 
@if($user->city ==1) 
<option selected value="1" > {{ $city->name_ru }}</option> 
@endif 
@endforeach 

@foreach(App\City::get() as $city) 
@if($user->city ==2) 
<option selected value="2" > {{ $city->name_ru }}</option> 
@endif 
@endforeach 

@foreach(App\City::get() as $city) 
@if($user->city ==3) 
<option selected value="3" > {{ $city->name_ru }}</option> 
@endif 
@endforeach 

我得到:

<option selected value="2" > cityA</option> 
<option selected value="2" > cityB</option> 
<option selected value="2" > cityC</option> 

請幫助

回答

-1

嘗試這個:

@foreach(App\City::get() as $city) 
$selected = ''; 
if($city->id == 1) // Any Id 
{ 
    $selected = 'selected="selected"'; 
} 
// $selected is initially empty and when the if criteria met it contains selected which make dropdown selected 
<option value='{{ $city->id }}' {{$selected}} >{{ $city->name_ru }}</option> 
@endforeach 
+0

Mayank,謝謝!!你的代碼給了我一個城市選擇,所以我改變了它。我認爲你會說這個代碼是可怕的,但它的作品:)這裏是: if($ user-> city == 1) foreach(App \ City :: get()as $ city) {{$選擇= ''}} 如果($都市> ID == 1) {{ $選擇= '選擇=選擇' }} ENDIF <選項值='{{$都市> ID}} 「{{$選擇}}> {{$都市> name_ru}} endforeach ENDIF 如果($用戶>城市== 2) 的foreach(應用程序\市::得到()爲$市) 如果($ city-> id == 2) {{selected =''}} $ selected ='se LEC ......... – Vit

1

你不應該使用型號查詢您的視圖中,因爲它是一個不好的做法,因爲你不遵循MVC模式。你可以試試這個:

內部控制器:

class UsersController extends Controller { 
    public function users() { 
     $users = User::with('city')->get(); 
     $cities = City::all(); 

     return view('view_name', compact('users', 'cities')); 
    } 
} 

和刀片視圖中,可以使用ternary operator這樣的:

@foreach($users as $user) 

    <select> 

     @foreach($cities as $city) 

      <option value="{{ $city->id }}" {{ ($user->city->id == $city->id) ? 'selected' : '' }}> 
       {{ $city->name }} 
      </option> 

     @endforeach 

    </select> 

@endforeach 

希望這有助於!

+0

Saumya, 我有: 類ProfileController可延伸控制器 { 公共函數編輯() { $用戶= \驗證::用戶(); return view('profile。編輯',compact('user')); }} 更改爲: public function edit() {user = \ Auth :: user(); $ users = User :: with('city') - > get(); $ cities = City :: all(); return view('profile.edit',compact('users','cities')); } 但它給了我: BadMethodCallException in Builder.php第2161行:調用未定義的方法Illuminate \ Database \ Query \ Builder :: city() 無論如何謝謝! 此外,我已經用Mayank的幫助解決了它,並在下面發佈了代碼..(代碼是可怕的,但是工作:) – Vit

0
<select name="cities" id="cities"> 
<option value="">Select Cities</option> 
@foreach($cities as $city){ 
<option value="{{$city->id}}{{($result->cityid==$city->id)?'SELECTED':''; ?>">{{$city->name}}</option> 
} 
@endforeach 
+1

雖然此代碼可能會解決問題,但應該始終添加一個解釋。 – BDL

相關問題