This episode is for members only

Sign up to access "Build an E-Commerce Platform" right now.

Get started
Already a member? Sign in to continue
Playing
09. Loading child variation dropdowns

Episodes

0%
Your progress
  • Total: 8h 42m
  • Played: 0m
  • Remaining: 8h 42m
Join or sign in to track your progress
01. Introduction and demo
9m 42s
0%
02. Installing Laravel, Breeze and Livewire
4m 47s
0%
03. Creating categories
9m 4s
0%
04. Recursively displaying categories
8m 21s
0%
05. Product model and migration
2m 50s
0%
06. Showing a product
7m 50s
0%
07. Product variation setup
10m 26s
0%
08. Creating the product selector
10m 34s
0%
09. Loading child variation dropdowns
4m 28s
0%
10. Faking adding the final variation
9m 33s
0%
11. Setting up product stock
4m 34s
0%
12. Calculating variation stock levels
9m 1s
0%
13. Adding product images with MediaLibrary
8m 50s
0%
14. Creating the product gallery
7m 28s
0%
15. Providing a fallback image
2m 56s
0%
16. Adding media to product variations
3m 37s
0%
17. Creating the cart model
3m 37s
0%
18. Registering the cart service
6m 34s
0%
19. Creating a cart session
11m 4s
0%
20. Showing the cart in the navigation
9m 19s
0%
21. Caching the cart instance
3m 2s
0%
22. Adding items to the cart
14m 1s
0%
23. Creating the notification component
8m 5s
0%
24. Showing the user's cart
6m 50s
0%
25. Outputting cart items
4m 50s
0%
26. Showing variation specifics
8m 8s
0%
27. Updating item quantity
8m 2s
0%
28. Removing an item from the cart
6m 1s
0%
29. Calculating the cart summary
8m 7s
0%
30. Showing the category products page
5m 1s
0%
31. Indexing products in Meilisearch
8m 32s
0%
32. Hooking up products to categories
4m 15s
0%
33. Building the product browser
13m 32s
0%
34. Showing child categories
1m 51s
0%
35. Indexing product variations for filtering
8m
0%
36. Outputting variations for filtering
12m 52s
0%
37. Hooking up product filters with Livewire
7m 48s
0%
38. Filtering products
12m 24s
0%
39. Filtering by price
9m 50s
0%
40. Adding global navigation search
7m 50s
0%
41. Handling products that are not live
3m 22s
0%
42. Price range category fix
1m 18s
0%
43. Scaffolding the checkout page
8m 6s
0%
44. Listing shipping options
9m 3s
0%
45. Calculating the cart totals
2m 52s
0%
46. Validating the account form
9m 10s
0%
47. Validating the shipping form
5m 47s
0%
48. Saving the shipping address
8m 4s
0%
49. Selecting a saved shipping address
6m 39s
0%
50. Fix shipping address error for non authenticated users
1m 7s
0%
51. Redirecting if the cart is empty
2m 42s
0%
52. Checking for quantity changes
7m 11s
0%
53. Syncing if quantities have changed
11m 59s
0%
54. Flashing a message when quantities have changed
5m 48s
0%
55. Setting up for orders
5m 17s
0%
56. Creating an order
13m 24s
0%
57. Attaching variations to order
6m 13s
0%
58. Reducing stock after ordering
2m 56s
0%
59. Meilisearch filter query fix
1m 33s
0%
60. Showing the order confirmation page
7m 39s
0%
61. Attaching orders for registering guest users
5m 17s
0%
62. Scaffolding the orders page
5m 30s
0%
63. Filling in order variation details
5m 24s
0%
64. Returning the order status
4m 39s
0%
65. Detecting order status changes
10m 49s
0%
66. Sending the order status change email
5m 12s
0%
67. Sending an order confirmation email
2m 47s
0%
68. Handling deleted cart records
4m 44s
0%
69. Transferring the guest cart
2m 44s
0%
70. Creating a presenter for the order status
4m 31s
0%
71. Setting up Stripe
3m 43s
0%
72. Creating and updating a PaymentIntent
16m 21s
0%
73. The Stripe card form
3m 35s
0%
74. Validating before payment
5m 34s
0%
75. Submitting a payment
6m 40s
0%
76. Checking for a successful payment
5m 47s
0%
77. Handling Stripe client errors
3m 11s
0%
78. Entangling Stripe customer data
2m 18s
0%

Transcript

00:00
Before we start to omit from this drop-down upwards to our product selector,
00:06
let's take a slightly simpler approach to showing the children of a particular variant that's been selected. Now if we just kind of step back a little bit and look at what we're doing here, we're iterating over each of the variations, when we click on one, let's head over to our product drop-down,
00:23
we are going ahead and always grabbing the model for the currently selected variation, which is what we see die-dumped out here. Now this is going to have children potentially, so what we can actually do is over in our product drop-down,
00:40
perhaps just down here under our select, is dump out the children for the current variation that we've just selected. So let's just try this out. Now because we've created a property here, we can access that directly within our blade template.
00:53
So let's just go ahead and dump out selected variation model and just see what we get. So when I choose black, sure enough, if we just get rid of that die-dump, so let's come down here and get rid of that temporarily, and click on that, there we go.
01:09
So there's black and there's white. Now inside of this what we can do is grab the children. Now let's go over to our product controller. So let's go over to product, show controller,
01:23
and let's do a little bit of eager loading here before we tackle that. So we've already got the product in here, so let's go ahead and do a load on this product, and what we want to load in from the variations that we're iterating through are the children.
01:41
So now if we come over to our product drop-down, we'll potentially have an object here which we can grab children from. Remember this selected variation model is going to be null if we haven't selected a variation. So let's choose black and just see what we get, and there we go.
01:55
Sure enough, we've now got those two sizes in there, which we can use to show another drop-down. So I think that's going to be a good approach, and then when we do select an item from these,
02:07
we can detect whether that's the final version with the SKU, and then we can show the add to cart button. So let's turn this into an if statement, that would kind of make sense. So if we have any children and we can even do a count on that,
02:23
then we want to show another drop-down. So let's just see how this handles just with that text in there, and you can see there we go, we're expecting another drop-down. If black didn't have any children and it was the final variation,
02:36
we wouldn't want to show that. Okay, so another drop-down is just going to be the same product drop-down component. So we can go ahead and again recursively call this product drop-down component, and for the variations we just want to pass in the selected variation model,
02:57
and the children of that. So pretty much what we're checking for here, we're just going to pass directly into there. Now I don't always like doing this,
03:04
but I'm going to go ahead and do a sort by on this particular collection by the order again within here, just to keep things a little bit simpler. And really importantly with this, because we are sort of nesting down, we're going to go ahead and add a key to this,
03:19
and that's going to be the selected variation. And remember this is an ID, so that's just a single ID here, just so Livewire can properly update the DOM as we go through this. So let's just try this out.
03:33
So let's go ahead and choose black, and yeah, there we go. So we're using the same component to show the two options that we have here. Now notice when I select size 8, we don't see another drop-down, because of course we don't have any other children.
03:48
But what we can do is now when we select 8, we can have a quick check to see if this has an SKU, emit this up, and then we can show the add to cart button, which when we click on it will add this particular variation to our cart.
04:03
We've not got to our cart functionality yet, but effectively this is what we want to add to our cart. We don't want to add the overall product to our cart, because that contains no useful information.
04:14
We want to add this item here to our cart. So now that we've got our sort of drop-downs coming down here, we can go over and look at showing our add to cart button when we end up with our final variation.
78 episodes8 hrs 42 mins

Overview

Build a robust e-commerce platform with a Laravel and Livewire. Features products with unlimited and flexible variations, a product browser with filters and price range slider, global product search, guest checkout, shipping and payment implementation, order status tracking and more.

Alex Garrett-Smith
Alex Garrett-Smith
Hey, I'm the founder of Codecourse!

Episode discussion

No comments, yet. Be the first!