Associazione del model di Laravel per selezione a discesa

Voglio che il valore di selezione a discesa sia selezionato nel mio module di modifica.

Nel mio controller

public function edit($id) { $vedit = DB::table('vehicles')->where('id', $id)->first(); $cartype= DB::table('car_category')->pluck('cartype'); return view('vehicles.edit', compact('vedit','cartype')); } 

In vista

 {{ Form::label('Vehicle Type', 'Vehicle Type') }} <select name="vehicle_type" class="form-control"> @foreach($cartype as $cartypes) <option value="{{ $cartypes}}">{{ $cartypes}}</option> @endforeach </select> 

Come posso raggiungere questo objective?

Quale versione di Laravel stai usando? Sembra che tu stia usando la facciata di Laravel Collective Form.

In tal caso, questo dovrebbe funzionare bene:

 {!! Form::label('Vehicle Type', 'Vehicle Type') !!} {!! Form::select('vehicle_type', $cartype, $vedit->vehicle_type ?: old('vehicle_type), ['class' => 'form-control']) !!} 

Supponendo $vedit->vehicle_type è il tipo di veicolo precedentemente memorizzato. Quindi preselezionerà ciò durante la modifica. In caso di creazione di new, old('vehicle_type') dovrebbe mantenere il valore precedentemente selezionato su validazioni fallite.

Chiamando pluck() una matrix di valori è già stata restituita per i tipi di auto.

Quindi usalo in questo modo in modo nativo con Laravel Collective:

 {!! Form::label('Vehicle Type', 'Vehicle Type') !!} {!! Form::select('vehicle_type', $cartype, null, ['class' => 'form-control']) !!} 

Nota, ho anche cambiato le tue doppie parentesi graffe. Le doppie parentesi graffe sfuggono all'output – data la facciata Form restituisce il codice HTML, si desidera che questo non venga riportto.

Maggiori informazioni sulla generazione di elenchi a discesa con Laravel Collective; https://laravelcollective.com/docs/5.4/html#drop-down-lists

La modifica mostra il valore attualmente selezionato e il vecchio valore se il module fallisce la validation:

 {!! Form::label('Vehicle Type', 'Vehicle Type') !!} {!! Form::select('vehicle_type', $cartype, old('vehicle_type', $vedit->vehicle_type), ['class' => 'form-control']) !!} 

Puoi aggiungere un attributo selected se è scelto come questo:

 {{ Form::label('Vehicle Type', 'Vehicle Type') }} <select name="vehicle_type" class="form-control"> @foreach($cartype as $cartypes) <option value="{{ $cartypes}}" {{ $cartypes == $vedit->vehicle_type ? 'selected' : ''}}>{{ $cartypes}}</option> @endforeach </select>