Crud: Modificar

En routes->web
Route::resource('cineastas', 'CineastasController');

En CineastasController:
public function edit($id) {
  $cineasta = Cineasta::find($id);
  return view('cineastas.edit',compact('cineasta'));
}

public function update(Request $request, $id) {
        request()->validate([
            'nombre' => 'required'
        ]);

        if (!isset(request()->es_oscar_winner)) { // si el checkbox no se marca no envia nada
            request()->es_oscar_winner = 0;
        }

        if (!isset(request()->decada_oscar)) { // si el radio no se marca no envia nada
            request()->decada_oscar = 0;
        }

        if (isset(request()->fotoCineasta)) { // puede que no elija nada en el campo file
            request()->validate([
                'fotoCineasta' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
            ]);

            $nomImagen = rand(1, 999) . '_' . request()->fotoCineasta->getClientOriginalName();
            request()->fotoCineasta->move(public_path('images'), $nomImagen);

            Cineasta::find($id)->update([
                'nombre' => $request->all()["nombre"],
                'fotoCineasta' => $nomImagen,
                'es_oscar_winner' => request()->es_oscar_winner,
                'decada_oscar' => request()->decada_oscar
            ]);
        }
        else {
            Cineasta::find($id)->update([
                'nombre' => $request->all()["nombre"],
                'es_oscar_winner' => request()->es_oscar_winner,
                'decada_oscar' => request()->decada_oscar
            ]);
        }
        return redirect()->route('cineastas.index')
            ->with('success','Se ha modificado correctamente el cineasta');
}

En la vista cineastas/edit.blade.php:
@include('header_edc')

<h2>Editar Cineasta</h2>

@if (count($errors) > 0)
    echo "No existe ese registro";
@endif

<?php
$arrDecada = array('1920', '1930', '1940', '1950', '1960', '1970', '1980', '1990', '2000', '2010');
?>

{!! Form::model($cineasta, ['method' => 'PATCH','route' => ['cineastas.update', $cineasta->id], 'files' => true]) !!}
<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12">
        <div class="form-group">
            <strong>Nombre:</strong>
            {!! Form::text('nombre', null, array('placeholder' => 'Nombre','class' => 'form-control')) !!}
        </div>
        <div class="form-group">
            <strong>Es ganador del Oscar:</strong>
            {{ Form::checkbox('es_oscar_winner', '1') }}
        </div>
        <div class="form-group">
            <strong>Década de su primer Oscar:</strong><br>
            @foreach ($arrDecada as $item)
                {{ Form::radio('decada_oscar', $item) }} {{ $item }}<br>
            @endforeach
        </div>
    </div>
    <div class="form-group">
        <p><img class="imgCineasta" src="{!! asset('images/'.$cineasta->fotoCineasta) !!}"></p>
        {{ Form::file('fotoCineasta', $attributes = array('enctype' => 'multipart/form-data')) }}
    </div>

    <div class="col-xs-12 col-sm-12 col-md-12 text-center">
        {{ Form::button('Modificar Cineasta', array('type' => 'submit', 'class' => 'btn btn-default btn-sm', 'onclick' => 'return checkFormCineasta()')) }}
    </div>
</div>
{!! Form::close() !!}

@include('footer_edc')

No hay comentarios:

Publicar un comentario