Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

yulquen's avatar

Product configurator with PHP/Laravel

Hey there!

I've a request for building a product configurator. For example: I want to build a new pc and i can first select between Intel or AMD as the cpu. After choosing an Intel cpu, i can only select appropriate motherboards in the next step. So with each selected option the remaining options may be reduced/unavailable depending on the current selection state.

In other words: When the user selects a specific option from the configuration list, another option from the same and/or another category will not be available to select. The options could have multiple relations/constraints to other options.

At the moment i've got not clue, how to implement this with PHP/Laravel. At least to not end up with hundreds of if-else statements which nobody is able to understand after a while ;-)

Because the configuration conditions could be a bit more complex at the end, i'm looking for a flexible and clean solution to implement this. Can anybody can give me a hint how i could start? I even dont know for what i query google for ;-)

What i know (quite simple ofc): I will have a table with all options (with description and price). But how can i build the constraints?

Thanks for any assistance on this topic!

0 likes
2 replies
swischen's avatar

Hi, I am interested too in building a product configurator with laravel. Can somebody give me tips?

Max13's avatar

I think you need to see your « Wizard » (Like windows installer, next next next) as a tree upside down.

The main trunk is your CPU, then you have motherboards, then, etc... Visually you can easily imagine it, right?

So you have to build your database the same way, a CPU table, then a motherboard table with many to one relation to CPUs, then power transformers with many to one to motherboard, etc...

Finally on the front end, you do like a wizard. Motherboard, then on click, load children (using jquery or VueJS), and so forth

Please or to participate in this conversation.