laravel - Returning correct value from array in Form Select -
just having trouble trying retrieve correct value form::select upon form submit.
i passing in array (which contains full_name , id). form displaying correct information, however, when return value form submit (e.g. if coach changes current value/player new name), getting form array id, not username id trying get. code below
in controller:
$ids = array($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9, $p10, $p11, $p12, $p13, $p14, $p15, $p16); $ids_ordered = implode(',', $ids); $player= db::table('players') ->wherein('id', $ids) ->selectraw('id, concat(fname," ",lname) full_name') ->orderbyraw(db::raw("field(id, $ids_ordered)")) //->pluck('id' ,'full_name') //only returning 1 value - not both? ->get() ->mapwithkeys(function($i) { return [$i->id => $i->full_name.' ('.$i->id.')']; }); $player=collect([$player])->flatten();
note: need 16 x ids in correct order sports team selection form. part working. tried using pluck, reaon return 1 value (e.g. full_name or id) - not both. changed mapwithkeys.
in form/view:
<div class="form-group"> {!! form::label('capt','team captain matchcard') !!} {!! form::select('capt', $played, null, ['placeholder' => $played[0] ,'class' => 'form-control']) !!} </div>
there 16 fields in form per above. placeholder current value (currently selected team player). coach can change drop-down ($played array).
the form displays perfectly. whats happening, lets coach changes capt field above (current player id 17 $played array value 0). if change/select new player drop down (e.g. id 25 may 4th name in drop list - hence array value [3] ) - return on submit (back in controller) displaying 3 , want 25 (the actual player id of desired name/player players table).
appreciate if can me new id in scenario... appreciated , in advance.
ps: using laravel 5.4
array display:
using example above, if change capt field in form select corry allsop (id 12), form returning 2 (3rd name in array)
correct way $played
database using pluck
$player= db::table('players') ->wherein('id', $ids) ->selectraw('id, concat(fname," ",lname) full_name') ->orderbyraw(db::raw("field(id, $ids_ordered)")) ->pluck('full_name' ,'id')
pluck second parameter array key , first value
//view {{ form::select('capt', $played, null) }}
edit:
remove line $player=collect([$player])->flatten();
. flatten method flattens multi-dimensional collection single dimension. that's why id key replaced array key (start 0)
edit 2:
display current player
//controller return view('grades.matchcard.edit', ['ids' => $ids, played' => $player, 'matchcards' => $data, 'rounds' => $data1, 'mid' => $mcid, 'gstat' => $gstat, 'rplayers' => $rplayers]); //view {{ form::select('capt', $played, $ids[0], ['class' => 'form-control']) }} {{ form::select('capt', $played, $ids[1], ['class' => 'form-control']) }}
Comments
Post a Comment