keyur's avatar

Considering switching to Magento

Hi, just wanted to raise a discussion and get people's thoughts. Not really a question, but more sharing my situation.

I'd originally written a custom cart in codeigniter, and then moved over to laravel a couple years ago. Took many months to build out and still ongoing with feature development. We are live with the cart and many orders have been placed on it. It is also one of the fastest carts i've seen.

But I've grown increasingly frustrated with developing basic ecommerce features (product options, rewards, promotions, etc) that Magento has out of the box or has as extensions. Building the backend admin screens is a real pain (using packages for basic crud is possible, but to do complex admin pages to manage relationships and bulk editing was a lot more work).

I always talked myself out of using a ready made cart. Primarily due to a desire to learn and a dislike of the UI decisions by magento / shopify. I also thought it would be easier to maintain and develop features for, not having to deal with Magento's complexity. But I took a look at Magento 2, and the UI is pretty nice with a lot of features out of the box.. The major drawback is magento is really slow (especially on my homestead / windows machine) and having to eventually deal with the EAV database structure.

Wondering if anyone else has considered a similar switch and your outcome. I really love using laravel, but for my needs, I think I can benefit more using a common ecommerce ecosystem instead of a generic framework. There is a steep learning curve, but it actually feels a little refreshing to not have to worry about needing to learn the best way to architect my site and instead following their guidelines. It would also be more easy to hire developers to work on building features onto a known api.

Thanks.

0 likes
11 replies
Pendo's avatar

I haven't started on building a cart in Laravel and I'm not planning to. I build a procedural PHP cart once, it worked but it was limited. It took a lot of time and a lot of testing. I see no reason why I wouldn't use the worlds most used e-commerce solution instead of a custom made. As you said, there is so much available for Magento. Personally I'm still selling Magento 1.9 (due to oursourcing) but I can't wait to get some experience with version 2, looks very promising but as far as I can judge it still misses some out-of-the-box functionallity or at least it misses some plugins for selling the product in the Netherlands.

So, my opinion? Don't re-invent the wheel, if there are great solutions use 'em.

jekinney's avatar

I have to agree. If you need a full featured forum why reinvent the wheel. Same for e-commerce.

The only hesitation I have, like word press, that some commercial and open source code leads to issues. Mainly security, as people figure out loop holes and exploit it.

Generally speaking most of the code base is fine and many times it's the users fault (not removing install files) but something to consider.

mehany's avatar

From a business perspective ( selling e-commerce platform to others) , yes don't reinvent the wheel. Magento is an e-commerce platform with three main target audience such as enterprise and many other child target audience like developers, it is nothing to compare to Laravel where laravel aims to make developers life easier ( it is Taylor passion, what an awesome dude :) ) help us right beautiful code.

From a developer perspective, I understand you end up re-inventing the wheel but think about this a little more before you switch, will you still be able to get child categories for a parent category like this:

$category->childCategories();

Or would you prefer the fully featured system that will force you to write the code like so

$category = Mage::getModel('catalog/category')->load(4);
$subcategories = $category->getChildrenCategories();
if (count($subcategories) > 0){
    echo $category->getName();
    foreach($subcategories as $subcategory){
        echo $subcategory->getName();
    }
}

More likely, the people who wish to own an e-commerce system will have thousands of records ( products ) to insert and they want to categorize them. Occasionally they will offer some discounts etc.. There is really two dozens of Models that construct an e-commerce application. Magento since its inception has been focused on only that, and it also involve third parties with the extensions system ( magento connect ). I am sure you have seen it already, but literally computer savvy customers will still not get "Why the magento product import tool is not working"

Edit:

Thinking about this a little more, I think a possible solution is to create Models in Laravel that interacts with the Magento Soap api. This way you remain leveraging the Magento features and the Laravel feature at the same time.

keyur's avatar

thanks for the feedback everyone. I think it helps solidifies the move.

@mehany , in the example you gave, there seems to be only a 1 line difference. in your second code example, it seems that the loop is outputting the code. Which you would still need to do in the first example. I really like how Eloquent and Collections work, and there's so much code it saves.

The real pain point is creating the back end administration screens. I have created a very flexible promotion system, but on the backend it is a simple yaml block. Whereas Magento has a really nice nested rules gui builder.

I like your suggestion about using Magento on the backend, and version 2 has a very robust REST api as well. I think I will try to go with magento out of the box and see what I can modify easily. Then down the road if I have performance or development issues, then try to integrate Laravel on the front end and Magento for the checkout and backend administration.

EliasSoares's avatar

You can consider migrating to Magento 2.0 that's composer based, faster then 1.x, but have poor options for extensions yet.

If you are going to migrate to 1.x and you have no experience with magento, you will have a long learning period IMO.

Maybe this learning period and the migrating period is greater then the time you will spend finishing your current store.

keyur's avatar

my current store is live, just takes a lot of work to develop for it. I would definitely start on Magento 2.0. It doesn't have as many extensions, but the file structure is more modern (though very pattern heavy). I think within a year, we should see the major extensions available.

sijukalikadan's avatar

Hi Keyur, I know by this time, you made a decision already. Still, I wanted to share my experience with Magento here so that it can help someone.

I am new to Laravel. My primary domain is Magento. I've been working on it for last 4 years. Magento 2 allows you many feature out of the box and a useful admin inteface. It's APIs supports SOAP and REST and almost everything can be done using the APIs. Unlike Magento 1, Magento 2 has an extensive documentation available including the API docs.

Since Magento 2 also follows the composer way of autoloading, you can understand things easily since laravel has already that in place.

It is true that Magento is a little complex, but for a developer having experience in Laravel can easily switch to Magento, I believe.

Thanks!

keyur's avatar
Level 2

thanks for responding @sijukalikadan . I actually ended up quitting on magento 2 after about 9 months of development time.

So many bugs and development was painful!!! It would take about 10 minutes to deploy to production because of the way magento compiles files.

I am now working on migrating to Shopify. I am close to finishing. Except for a few limitations, it works very well. It has feature limitations, but not the types of bugs that Magento has.

The issues list on magento's github just keeps growing all the time. And the design decisions for magento 2 are so complex! After all that time, I could barely understand how they would query for products.

I am actually enjoying developing again after using shopify. And I can still pair up laravel with shopify for custom app functionality. Shopify gives great API access.

reillo's avatar

I would agree with @Pendo. My new company has an internal E-commerce system built using Laravel. The system was fast and was really good. But the problem is the development time for any customer required changes by the client.

Based on my experience, Magento v1 is slow so you need resources to make it faster. It may slow but it will save you tons of time and money in maintaining and creating new functions. So, it is better to use an existing working one than to reinvent the wheel.

Please or to participate in this conversation.