Curso App para Pizzería con delivery
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
557 visitas
« Capítulo 5 – Implementación CRUD Productos
Capítulo 7 – Implementación CRUD Pedidos »
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2024