/** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { if (Gate::denies('admin')) { abort(403); } $out = ['form_route' => ['route' => ['track.update', $id], 'method' => 'PUT', 'class' => 'form-horizontal'], 'artist_credit' => []]; $out['track'] = Track::findOrNew((int) $id); $out['genre'] = Genre::orderBy('id')->lists('name', 'id'); if (count(Request::old())) { $old = Request::old(); $out['release'] = Release::find($old['release_id']); if (isset($old['artist_credit']['id'])) { foreach ($old['artist_credit']['id'] as $n => $ac_id) { $artist = Artist::where('id', $ac_id)->firstOrFail(); if (count($artist)) { $out['artist_credit'][$n]['name'] = $artist->name; $out['artist_credit'][$n]['work_type_id'] = $old['artist_credit']['work'][$n]; $out['artist_credit'][$n]['join_phrase'] = $old['artist_credit']['join'][$n]; $out['artist_credit'][$n]['artist_id'] = $old['artist_credit']['id'][$n]; } } } } else { $out['release'] = $out['track']->release; $out['artist_credit'] = $out['track']->credit->credit_name; } $out['work_type'] = WorkType::all(); $out['genres_selected'] = []; foreach ($out['track']->genres as $row) { $out['genres_selected'][] = $row->id; } return view('tracks.form', $out); }