Curso Laravel Página Web Administrable

CRUD producto

Creamos un controlador en una carpeta Admin, donde programamos los métodos para gestionar la información del objeto Productos a través de vistas Blade.

Lección 19 del Curso Laravel Página Web Administrable

DESCRIPCIÓN DE LA LECCIÓN

Creamos un controlador en una carpeta Admin, donde programamos los métodos para gestionar la información del objeto Productos  a través de vistas Blade.

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Producto;
use Illuminate\Support\Str;
use Image;
use Session;

class ProductoController extends Controller
{
    public function index(){
        if(!empty(Session::get('categoria_id'))){
            ....
            return view("admin.producto.index",compact('productos'));
        }
    }
    public function create(){
        return view('admin.producto.create');
    }
    public function store(Request $request){

        $producto = new Producto($request->all());
        
        if($request->hasFile('urlfoto')){

            $imagen = $request->file('urlfoto');
            $nuevonombre = Str::slug($request->nombre).'.'.$imagen->guessExtension();
            .....
            ->resize(1024,null,function($constraint){ $constraint->aspectRatio();  })
            ->save( public_path('/img/producto/'.$nuevonombre));

            $producto->urlfoto = $nuevonombre;
        }
        .....
        $producto->slug    =   Str::slug($request->nombre);
        $producto->save();
        return redirect('/admin/producto');

    }
    public function update(Request $request,$id){

        $producto = Producto::findOrFail($id);
        ....
        $foto_anterior     = $producto->urlfoto;


        if($request->hasFile('urlfoto')){

            $rutaAnterior = public_path('/img/producto/'.$foto_anterior);
            if(file_exists($rutaAnterior)){ unlink(realpath($rutaAnterior)); }

            ....
            $nuevonombre = Str::slug($request->nombre).'.'.$imagen->guessExtension();
            Image::make($imagen->getRealPath())
            .....
            ->save( public_path('/img/producto/'.$nuevonombre));

            $producto->urlfoto = $nuevonombre;
        }
        $producto->slug    =   Str::slug($request->nombre);
        $producto->save();
        return redirect('/admin/producto');
    }

    public function edit($id){
        $producto = Producto::findOrFail($id);
        return view('admin.producto.edit',compact('producto'));
    }

    
    public function destroy($id){
        $producto = Producto::findOrFail($id);
        ....
        if(file_exists($borrar)){ unlink(realpath($borrar)); }

        $producto->delete();

        return redirect('/admin/producto');
    }
}

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('producto.create')}}" class="btn btn-success">NUEVO</a>
            <table class="table table-striped">
                <thead>
                    <th>Orden</th>
                    <th>Nombre</th>                
                    <th>Acción</th>
                </thead>
                <tbody>
                    @forelse ($productos as $item)
                    <tr>
                        <td>{{$item->orden}}</td>
                        <td>{{$item->nombre}}</td>
                        <td>
                            <a href="{{ route('producto.edit',$item->id)}}" class="btn btn-success">EDITAR</a>
                            {!! Form::open(['method'=>'DELETE','route'=>['producto.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'=>['producto.store'],'method'=>'POST','files'=>true]) !!}

            <div class="jumbotron">
                <div class="form-group">
                    <label for="title">INGRESE TITLE</label>
                    {!! Form::text('title',null ,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>
                <div class="form-group">
                    <label for="description">INGRESE DESCRIPTION</label>
                    {!! Form::text('description',null ,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>

                <div class="form-group">
                    <label for="nombre">INGRESE NOMBRE</label>
                    {!! Form::text('nombre',null ,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>

                <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="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/producto/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'=>['producto.update',$producto],'method'=>'PUT','files'=>true]) !!}

            <div class="jumbotron">
                <div class="form-group">
                    <label for="title">INGRESE TITLE</label>
                    {!! Form::text('title',$producto->title,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>
                <div class="form-group">
                    <label for="description">INGRESE description</label>
                    {!! Form::text('description',$producto->description,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>

                <div class="form-group">
                    <label for="nombre">INGRESE NOMBRE</label>
                    {!! Form::text('nombre',$producto->nombre,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>

                <div class="form-group">
                    <label for="descripcion">INGRESE DESCRIPCIÓN</label>
                    {!! Form::text('descripcion',$producto->descripcion,['class'=>'form-control','maxlength'=>'67']) !!}
                </div>

                <div class="form-group">
                    <label for="orden">INGRESE ORDEN</label>
                    {!! Form::text('orden',$producto->orden,['class'=>'form-control']) !!}
                </div>

                <div class="form-group">
                    <label for="urlfoto">IMAGEN</label> <br>
                    <img src="/img/producto/{{$producto->urlfoto}}">
                    {!! Form::file('urlfoto') !!}
                </div>
            </div>
            {!! Form::submit('GUARDAR',['class'=>'btn btn-success']) !!}
            {!! Form::close() !!}
        </div>
    </div>
</div>
@endsection

POR LA COMPRA DEL CURSO COMPLETO

  • MIRA TODOS LOS VIDEOS SIN RESTRICCIÓN
  • TEN ACCESO AL CURSO
  • DESCARGA TODO CÓDIGO FUENTE DEL PROYECTO
  • ACCESO A CURSOS Y RECURSOS GRATIS

Laravel Página Web Administrable

¿Cómo implementar un CRUD en Laravel 8 para Productos? Artesanías

1557 visitas

Lecciones del curso

5. Configuraciones Básicas 799
8. Bootstrap, fuentes y recursos gráficos 802
10. Modelo y Migración Categoria 647
11. Modelo y Migración Productos 522
12. Modelo y Migración Post 483
13. Modelo y Migración Carrusel 493
14. Modelo y Migración Configuración 460
15. Modelo y Migración Empresa 469
16. Arquitectura de Urls 669
18. CRUD categoria 850
19. CRUD producto 1557
20. CRUD Blog 846
21. CRUD Carrusel 806
22. CRUD Empresa 483
23. Debug y llenado de datos 456
24. ViewComposers y Layout FrontEnd 837
25. Menu Navegación dinámico 539
26. Carrusel imágenes dinámico 547
27. Artesanías más demandas 461
29. Diseño FrontEnd de la Portada 516
30. Diseño FrontEnd Empresa 444
31. Diseño FrontEnd página artesanías 560
32. Diseño FrontEnd página categorías 436
33. Diseño FrontEnd página Productos 432
34. Diseño FrontEnd página Blog 436
35. Diseño Frontend página post 581
36. Diseño FrontEnd página Contacto 466
37. Proceso del Formulario 546
VER MÁS CURSOS
Codea App

Codea App FullStack

Perú, México, Colombia, España, Venezuela, Argentina, Bolivia

You Fb Tik Pin

© Todos los derechos reservados Codea App FullStack | Cursos de programación avanzados | 2020 - 2021