シナリオにはいくつかの都市が含まれていますが、編集フォームに問題があります。Laravel 5.2 Looping結果が重複しないようにする方法は?
問題はゾーンselected=true
に都市belonsを作る必要があり、デフォルトオプションでゾーンに属していない他の都市です。
は、だから私はこの
@foreach($cities as $city)
@foreach($zone->cities as $zone_city)
@if($city->id == $zone_city->id)
<option value="{{ $city->id }}" selected="true">{{ $city->name }}</option>
@endif
@endforeach
//if current city id not yet printed before then
<option value="{{ $city->id }}">{{ $city->name }}</option>
@endforeach
$cities
のような2つのループを持っていることは価値がある1, 2, 3, 4, 5
コントローラから渡されたすべての都市であり、そして$zone->cities
値は1, 3, 5
あるゾーンに属している都市です。上記のコードでは
私はこの結果を得る
<option value="1" selected="true">Surabaya</option>
<option value="1">Surabaya</option>
<option value="2">Sidoarjo</option>
<option value="3" selected="true">Malang</option>
<option value="3">Malang</option>
<option value="4" selected="true">Gresik</option>
<option value="4">Gresik</option>
<option value="5">Madura</option>
私が期待される結果は、私のループコードのロジックを修正する方法
<option value="1" selected="true">Surabaya</option>
<option value="2">Sidoarjo</option>
<option value="3" selected="true">Malang</option>
<option value="4" selected="true">Gresik</option>
<option value="5">Madura</option>
のですか?
ありがとうございました。
@foreach($cities as $city)
$currentCity = false;
@foreach($zone->cities as $zone_city)
@if($city->id == $zone_city->id)
$currentCity = true;
<option value="{{ $city->id }}" selected="true">{{ $city->name }}</option>
@endif
@endforeach
//if current city id not yet printed before then
@if($currentCity)
<option value="{{ $city->id }}">{{ $city->name }}</option>
@endif
@endforeach
しかし、私は、これはより良いアプローチだと思う、とにフィット:ここ
を更新し
は私の編集コントローラ
public function zone_edit($id)
{
$zone = Zone::find($id);
$cities = City::all();
return view('backend.admin.pricings.zone_edit', compact('zone', 'cities'));
}
あなたは私の日を救うそれは動作しますが、配列で遊びをしなくてもこれを行うことができるlaravelからの資金がありますか?コレクションにオブジェクトやその他のものが含まれているかのようなもの。 –
コントローラでこれらの操作を行う必要がありますが、laravelコレクションは方法ですが、この場合はそれほど有益ではありません – Vikash
私の編集コントローラを表示する質問を更新しました。 –