Lección 21: CRUD Carrusel
Muy similar a los demás CRUD implementados en las lecciones pasadas, con su métodos y vistas para gestionar las imágenes del carrusel de la portada inicial
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Carrusel;
use Image;
class CarruselController extends Controller
{
public function index(){
$carrusels = Carrusel::all();
return view("admin.carrusel.index",compact('carrusels'));
}
public function create(){
return view('admin.carrusel.create');
}
public function store(Request $request){
$carrusel = new carrusel($request->all());
if($request->hasFile('urlfoto')){
$imagen = $request->file('urlfoto');
$nuevonombre = 'artesanias_'.time().'.'.$imagen->guessExtension();
Image::make($imagen->getRealPath())
->fit(1200,450,function($constraint){ $constraint->upsize(); })
->save( public_path('/img/carrusel/'.$nuevonombre));
$carrusel->urlfoto = $nuevonombre;
}
$carrusel->save();
return redirect('/admin/carrusel');
}
public function update(Request $request,$id){
$carrusel = carrusel::findOrFail($id);
$carrusel->fill($request->all());
$foto_anterior = $carrusel->urlfoto;
if($request->hasFile('urlfoto')){
$rutaAnterior = public_path('/img/carrusel/'.$foto_anterior);
if(file_exists($rutaAnterior)){ unlink(realpath($rutaAnterior)); }
$imagen = $request->file('urlfoto');
$nuevonombre = 'artesanias_'.time().'.'.$imagen->guessExtension();
Image::make($imagen->getRealPath())
->fit(1200,450,function($constraint){ $constraint->upsize(); })
->save( public_path('/img/carrusel/'.$nuevonombre));
$carrusel->urlfoto = $nuevonombre;
}
$carrusel->save();
return redirect('/admin/carrusel');
}
public function edit($id){
$carrusel = carrusel::findOrFail($id);
return view('admin.carrusel.edit',compact('carrusel'));
}
public function destroy($id){
$carrusel = carrusel::findOrFail($id);
$borrar = public_path('/img/carrusel/'.$carrusel->urlfoto);
if(file_exists($borrar)){ unlink(realpath($borrar)); }
$carrusel->delete();
return redirect('/admin/carrusel');
}
}
VISTAS BLADE
index.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
@include('admin.submenu')
<div class="col-sm-10">
<a href="{{route('carrusel.create')}}" class="btn btn-success">NUEVO</a>
<table class="table table-striped">
<thead>
<th>Orden</th>
<th>Imagen</th>
<th>Acción</th>
</thead>
<tbody>
@forelse ($carrusels as $item)
<tr>
<td>{{$item->orden}}</td>
<td><img src="/img/carrusel/{{$item->urlfoto}}" width="300"></td>
<td>
<a href="{{ route('carrusel.edit',$item->id)}}" class="btn btn-success">EDITAR</a>
{!! Form::open(['method'=>'DELETE','route'=>['carrusel.destroy',$item->id],'style'=>'display:inline']) !!}
{!! Form::submit('ELIMINAR',['class'=>'btn btn-success','onclick'=>'return confirm("ESTA SEGURO DE ELIMINAR")']) !!}
{!! Form::close() !!}
</td>
</tr>
@empty
@endforelse
</tbody>
</table>
</div>
</div>
</div>
@endsection
create.blade.php
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<div class="row">
@include('admin.submenu')
<div class="col-sm-10">
{!! Form::open(['route'=>['carrusel.store'],'method'=>'POST','files'=>true]) !!}
<div class="jumbotron">
<div class="form-group">
<label for="descripcion">INGRESE DESCRIPCIÓN</label>
{!! Form::text('descripcion',null ,['class'=>'form-control','maxlength'=>'67']) !!}
</div>
<div class="form-group">
<label for="link">INGRESE LINK</label>
{!! Form::text('link',null ,['class'=>'form-control']) !!}
</div>
<div class="form-group">
<label for="orden">INGRESE ORDEN</label>
{!! Form::text('orden',null ,['class'=>'form-control']) !!}
</div>
<div class="form-group">
<label for="urlfoto">IMAGEN</label> <br>
<img src="/img/carrusel/foto.jpg">
{!! Form::file('urlfoto') !!}
</div>
</div>
{!! Form::submit('GUARDAR',['class'=>'btn btn-success']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
@endsection
edit.blade.php
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<div class="row">
@include('admin.submenu')
<div class="col-sm-10">
{!! Form::open(['route'=>['carrusel.update',$carrusel],'method'=>'PUT','files'=>true]) !!}
<div class="jumbotron">
<div class="form-group">
<label for="descripcion">INGRESE DESCRIPCIÓN</label>
{!! Form::text('descripcion',$carrusel->descripcion,['class'=>'form-control','maxlength'=>'67']) !!}
</div>
<div class="form-group">
<label for="link">INGRESE LINK</label>
{!! Form::text('link',$carrusel->link ,['class'=>'form-control']) !!}
</div>
<div class="form-group">
<label for="orden">INGRESE ORDEN</label>
{!! Form::text('orden',$carrusel->orden,['class'=>'form-control']) !!}
</div>
<div class="form-group">
<label for="urlfoto">IMAGEN</label> <br>
<img src="/img/carrusel/{{$carrusel->urlfoto}}">
{!! Form::file('urlfoto') !!}
</div>
</div>
{!! Form::submit('GUARDAR',['class'=>'btn btn-success']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
@endsection
1521 visitas