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

1155 visitas

Lecciones del curso

5. Configuraciones Básicas 647
8. Bootstrap, fuentes y recursos gráficos 585
10. Modelo y Migración Categoria 475
11. Modelo y Migración Productos 403
12. Modelo y Migración Post 366
13. Modelo y Migración Carrusel 384
14. Modelo y Migración Configuración 367
15. Modelo y Migración Empresa 361
16. Arquitectura de Urls 471
18. CRUD categoria 568
19. CRUD producto 1155
20. CRUD Blog 552
21. CRUD Carrusel 544
22. CRUD Empresa 365
23. Debug y llenado de datos 353
24. ViewComposers y Layout FrontEnd 675
25. Menu Navegación dinámico 407
26. Carrusel imágenes dinámico 355
27. Artesanías más demandas 345
29. Diseño FrontEnd de la Portada 396
30. Diseño FrontEnd Empresa 330
31. Diseño FrontEnd página artesanías 392
32. Diseño FrontEnd página categorías 326
33. Diseño FrontEnd página Productos 343
34. Diseño FrontEnd página Blog 327
35. Diseño Frontend página post 396
36. Diseño FrontEnd página Contacto 353
37. Proceso del Formulario 415
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