Capitulo 6 del Módulo 2 Panel de Administración

➜ Implementación CRUD Precios

Implementación de Precios en Laravel | Implementación del Modelo para precios según el tamaño de las Pizzas, controlador, vistas y rutas para la gestión desde la administración

Implementación del Modelo para precios según el tamaño de las Pizzas, controlador, vistas y rutas para la gestión desde la administración

Ruta web.php


Route::group(['prefix' => 'admin', 	'middleware' => ['auth','role:admin']], function() {
    // rutas para el administrador
    Route::resource('categoria', App\Http\Controllers\Admin\CategoriaController::class,["as"=>"admin"]);
    Route::resource('producto', App\Http\Controllers\Admin\ProductoController::class,["as"=>"admin"]);
    Route::resource('precio', App\Http\Controllers\Admin\PrecioController::class,["as"=>"admin"]);
   
});

 

Modelo Precio.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Precio extends Model
{
    use HasFactory;
    public $timestamps = false;
    protected $fillable = [
       
        'nombre',       
        'precio',       
        'producto_id'
    ];
    public function producto(){
        return $this->belongsTo(Producto::class);
    }
}

 

Migración

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('precios', function (Blueprint $table) {
            $table->id();
            $table->string('nombre',50)->nullable();
            $table->decimal('precio',7,2)->nullable();            
            $table->foreignId('producto_id')->references('id')->on('productos');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('precios');
    }
};

 

Controlador

<?php

namespace App\Http\Controllers\Admin;

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

class PrecioController extends Controller
{
    public function index(){
        if(Session::get("producto_id")!=null){
            $precios = Precio::whereProducto_id(Session::get("producto_id"))->get();
            $producto = Producto::find(Session::get("producto_id"));
            return view("admin.precio.index",compact("precios","producto"));
        }
    }
    public function create(){
        return view('admin.precio.create');
    }
    public function store(Request $request){
        $precio          =   new Precio($request->all());
        $precio->producto_id = Session::get("producto_id");
        $precio->save();
        return redirect('admin/precio');
    }

    public function edit($id){
        $precio   =   Precio::find($id);        
        return view('admin.precio.edit',compact("precio"));
    }
    public function update(Request $request, $id){
        $precio             =   Precio::findOrFail($id);
        $urlfotoanterior    =   $precio->urlfoto;
        $precio->fill($request->all());         
        $precio->save();
        return redirect('admin/precio');
    }

    public function destroy($id){
        $precio=Precio::findOrFail($id);        
        $precio->delete();
        return redirect('admin/precio');
    }

}

 

Vista index.blade.php

@extends('layouts.admin')
@section('content')
<div class="container">
    <div class="row justify-content-center">
        @include("admin.menu")
        <div class="col-sm-8">
            <a href="/admin/categoria">{{$producto->categoria->nombre}}</a> <a href="/admin/producto">{{$producto->nombre}}</a> <br>
            <a href="{{route("admin.precio.create")}}" class="btn btn-success">CREAR PRECIO</a>
            <table class="table table-bordered mt-3">
                <tr><th>ID</th><th>NOMBRE</th><th>PRECIO</th><th>ACCIÓN</th></tr>
                @forelse ($precios as $c)
                <tr>
                    <td>{{$c->id}}</td>
                    <td>{{$c->nombre}}</td>
                    <td>{{$c->precio}}</td>
                    <td>
                        <a href="{{route("admin.precio.edit",$c->id)}}" class="btn btn-success">EDITAR PRECIO</a>
                        {!! Form::open(['method' => 'DELETE','route' => ['admin.precio.destroy', $c->id],'style'=>'display:inline']) !!}
                            {!! Form::submit('ELIMINAR PRECIO', ['class' => 'btn btn-success','onclick'=>'return confirm("¿Eliminar Precio?")']) !!}
                        {!! Form::close() !!}
                    </td>
                </tr>
                @empty
                    <tr><td></td></tr>
                @endforelse
            </table>
            <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
        </div>
    </div>
</div>
@endsection

 

vista create.blade.php

@extends('layouts.admin')
@section('content')
<div class="container">
    <div class="row justify-content-center">
    @include("admin.menu")
        <div class="col-sm-8">
            {!! Form::open(['route'=>'admin.precio.store','method'=>'POST']) !!}
            <div class="form-group row">                
                <div class="col-sm-4">
                    {!! Form::label('nombre','Nombre') !!}
                    {!! Form::text('nombre',null,['class'=>'form-control','required']) !!}
                </div>              
                <div class="col-sm-4">
                    {!! Form::label('precio','Precio') !!}
                    {!! Form::text('precio',null,['class'=>'form-control','required']) !!}
                </div>
            </div>            
            <div class="form-group mt-3">
                <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
                {{ Form::submit('CREAR PRECIO',['class'=>'btn btn-success']) }}
            </div>
            {!! Form::close() !!}
        </div>
    </div>
</div>
@endsection

vista edit.blade.php

@extends('layouts.admin')
@section('content')
<div class="container">
    <div class="row justify-content-center">
    @include("admin.menu")
        <div class="col-sm-8">
            {!! Form::open(['route'=>['admin.precio.update',$precio],'method'=>'PUT']) !!}
            <div class="form-group row">                
                <div class="col-sm-6">
                {!! Form::label('nombre','Nombre') !!}
                {!! Form::text('nombre',$precio->nombre,['class'=>'form-control','required']) !!}
                </div>                
                <div class="col-sm-6">
                    {!! Form::label('precio','Precio') !!}
                    {!! Form::text('precio',$precio->precio,['class'=>'form-control','required']) !!}
                </div>
            </div>
            <div class="form-group mt-3">
                <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
                {{ Form::submit('GUARDAR PRECIO',['class'=>'btn btn-success']) }}
            </div>
            {!! Form::close() !!}
        </div>
    </div>
</div>
@endsection

 

 

 


1028 visitas

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Comprar

¡Qué aprenderás?

tooltip bs-tooltip-top bs-tooltip-end bs-tooltip-bottom bs-tooltip-start show fade tooltip-inner

Codea Applications

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