Skip to content

Commit

Permalink
Se agrego livewire con componente para actualizar carro
Browse files Browse the repository at this point in the history
  • Loading branch information
alejandro-ser committed May 18, 2020
1 parent f267209 commit d22eb69
Show file tree
Hide file tree
Showing 8 changed files with 232 additions and 94 deletions.
35 changes: 35 additions & 0 deletions app/Http/Livewire/CartUpdateForm.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Cart;

class CartUpdateForm extends Component
{
public $item = [];
public $quantity = 0;

public function mount($item)
{
$this->item = $item;
$this->quantity = $item['quantity'];
}

public function updateCart()
{
Cart::session(auth()->id())->update($this->item['id'],[
'quantity' => array(
'relative' => false,
'value' => $this->quantity
)
]);

$this->emit('cartUpdated');
}

public function render()
{
return view('livewire.cart-update-form');
}
}
29 changes: 29 additions & 0 deletions app/Http/Livewire/MallCart.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Cart;

class MallCart extends Component
{
public $cartItems = [];

protected $listeners = ['cartUpdated' => 'onCartUpdate'];

public function mount()
{
$this->cartItems = Cart::session(auth()->id())->getContent()->toArray();
}

public function onCartUpdate()
{
//$this->cartItems = Cart::session(auth()->id())->getContent()->toArray();
$this->mount();
}

public function render()
{
return view('livewire.mall-cart');
}
}
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"laravel/framework": "^7.0",
"laravel/tinker": "^2.0",
"laravel/ui": "^2.0",
"livewire/livewire": "^1.1",
"orangehill/iseed": "^2.6",
"srmklive/paypal": "~1.0",
"tcg/voyager": "^1.4"
Expand Down
65 changes: 64 additions & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 1 addition & 68 deletions resources/views/cart/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,73 +2,6 @@

@section('content')

<!-- shopping-cart-area start -->
<div class="cart-main-area pt-50 pb-100">
<div class="container">
<div class="section-title-4 text-center mb-40">
<h2>Cart</h2>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="table-content table-responsive">
<table>
<thead>
<tr>
<th>remove</th>
<th>images</th>
<th>Product</th>
<th>Price</th>
<th>Quantity</th>
<th>Total</th>
</tr>
</thead>
<tbody>
@foreach ($cartItems as $item)
<tr>
<td class="product-remove"><a href="{{ route('cart.destroy', $item->id) }}"><i class="pe-7s-close"></i></a></td>
<td class="product-thumbnail">
<a href="#"><img src="assets/img/cart/1.jpg" alt=""></a>
</td>
<td class="product-name"><a href="#">{{ $item->name }} </a></td>
<td class="product-price-cart"><span class="amount">${{ Cart::session(auth()->id())->get($item->id)->price }}</span></td>
<td class="product-quantity">
<form action="{{ route('cart.update', $item->id) }}">
<input type="number" name="quantity" value="{{ $item->quantity }}">
<input type="submit" class="button" value="Save">
</form>
</td>
<td class="product-subtotal">${{ Cart::session(auth()->id())->get($item->id)->getPriceSum() }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div class="coupon-all">
<div class="coupon">
<h4>Have you a coupon?</h4>
<form action="{{route('cart.coupon')}}" method="get">
<input id="coupon_code" class="input-text" name="coupon_code" placeholder="Coupon code" type="text">
<input class="button" name="apply_coupon" value="Apply coupon" type="submit">
</form>
</div>
</div>
</div>
<div class="col-md-6 ml-auto">
<div class="cart-page-total" style="padding-top:30px;">
<h2>Cart totals</h2>
<ul>
<li>Subtotal<span>{{ Cart::session(auth()->id())->getSubTotal() }}</span></li>
<li>Total<span>{{ Cart::session(auth()->id())->getTotal() }}</span></li>
</ul>
<a href="{{ route('cart.checkout') }}">Proceed to checkout</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<livewire:mall-cart />

@endsection
54 changes: 29 additions & 25 deletions resources/views/layouts/front.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,22 @@
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="/assets/img/favicon.png">
<link rel="shortcut icon" type="image/x-icon" href="{{ asset('assets/img/favicon.png')}} ">

<!-- all css here -->
<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/magnific-popup.css">
<link rel="stylesheet" href="/assets/css/animate.css">
<link rel="stylesheet" href="/assets/css/owl.carousel.min.css">
<link rel="stylesheet" href="/assets/css/themify-icons.css">
<link rel="stylesheet" href="/assets/css/pe-icon-7-stroke.css">
<link rel="stylesheet" href="/assets/css/icofont.css">
<link rel="stylesheet" href="/assets/css/meanmenu.min.css">
<link rel="stylesheet" href="/assets/css/bundle.css">
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="stylesheet" href="/assets/css/responsive.css">
<script src="/assets/js/vendor/modernizr-2.8.3.min.js"></script>
<link rel="stylesheet" href="{{ asset('assets/css/bootstrap.min.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/magnific-popup.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/animate.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/owl.carousel.min.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/themify-icons.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/pe-icon-7-stroke.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/icofont.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/meanmenu.min.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/bundle.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/style.css')}} ">
<link rel="stylesheet" href="{{ asset('assets/css/responsive.css')}} ">

@livewireStyles
</head>

<body>
Expand Down Expand Up @@ -531,18 +532,21 @@


<!-- all js here -->
<script src="/assets/js/vendor/jquery-1.12.0.min.js"></script>
<script src="/assets/js/popper.js"></script>
<script src="/assets/js/bootstrap.min.js"></script>
<script src="/assets/js/jquery.magnific-popup.min.js"></script>
<script src="/assets/js/isotope.pkgd.min.js"></script>
<script src="/assets/js/imagesloaded.pkgd.min.js"></script>
<script src="/assets/js/jquery.counterup.min.js"></script>
<script src="/assets/js/waypoints.min.js"></script>
<script src="/assets/js/ajax-mail.js"></script>
<script src="/assets/js/owl.carousel.min.js"></script>
<script src="/assets/js/plugins.js"></script>
<script src="/assets/js/main.js"></script>
<script src="{{ asset('assets/js/vendor/modernizr-2.8.3.min.js')}} "></script>
<script src="{{ asset('assets/js/vendor/jquery-1.12.0.min.js')}} "></script>
<script src="{{ asset('assets/js/popper.js')}} "></script>
<script src="{{ asset('assets/js/bootstrap.min.js')}} "></script>
<script src="{{ asset('assets/js/jquery.magnific-popup.min.js')}} "></script>
<script src="{{ asset('assets/js/isotope.pkgd.min.js')}} "></script>
<script src="{{ asset('assets/js/imagesloaded.pkgd.min.js')}} "></script>
<script src="{{ asset('assets/js/jquery.counterup.min.js')}} "></script>
<script src="{{ asset('assets/js/waypoints.min.js')}} "></script>
<script src="{{ asset('assets/js/ajax-mail.js')}} "></script>
<script src="{{ asset('assets/js/owl.carousel.min.js')}} "></script>
<script src="{{ asset('assets/js/plugins.js')}} "></script>
<script src="{{ asset('assets/js/main.js')}} "></script>

@livewireScripts
</body>

</html>
6 changes: 6 additions & 0 deletions resources/views/livewire/cart-update-form.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<div>
<form wire:submit.prevent="updateCart">
<input type="number" wire:model="quantity" wire:change="updateCart">
{{-- <input type="submit" class="button" value="Save"> --}}
</form>
</div>
67 changes: 67 additions & 0 deletions resources/views/livewire/mall-cart.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<div>
<!-- shopping-cart-area start -->
<div class="cart-main-area pt-50 pb-100">
<div class="container">
<div class="section-title-4 text-center mb-40">
<h2>Cart</h2>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="table-content table-responsive">
<table>
<thead>
<tr>
<th>remove</th>
<th>images</th>
<th>Product</th>
<th>Price</th>
<th>Quantity</th>
<th>Total</th>
</tr>
</thead>
<tbody>
@foreach ($cartItems as $item)
<tr>
<td class="product-remove"><a href="{{ route('cart.destroy', $item['id']) }}"><i class="pe-7s-close"></i></a></td>
<td class="product-thumbnail">
<a href="#"><img src="assets/img/cart/1.jpg" alt=""></a>
</td>
<td class="product-name"><a href="#">{{ $item['name'] }} </a></td>
<td class="product-price-cart"><span class="amount">${{ Cart::session(auth()->id())->get($item['id'])->price }}</span></td>
<td class="product-quantity">
<livewire:cart-update-form :item="$item" :key="$item['id']" />
</td>
<td class="product-subtotal">${{ Cart::session(auth()->id())->get($item['id'])->getPriceSum() }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div class="coupon-all">
<div class="coupon">
<h4>Have you a coupon?</h4>
<form action="{{route('cart.coupon')}}" method="get">
<input id="coupon_code" class="input-text" name="coupon_code" placeholder="Coupon code" type="text">
<input class="button" name="apply_coupon" value="Apply coupon" type="submit">
</form>
</div>
</div>
</div>
<div class="col-md-6 ml-auto">
<div class="cart-page-total" style="padding-top:30px;">
<h2>Cart totals</h2>
<ul>
<li>Subtotal<span>{{ Cart::session(auth()->id())->getSubTotal() }}</span></li>
<li>Total<span>{{ Cart::session(auth()->id())->getTotal() }}</span></li>
</ul>
<a href="{{ route('cart.checkout') }}">Proceed to checkout</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

0 comments on commit d22eb69

Please sign in to comment.