PHPackages                             liip/magento-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. liip/magento-bundle

AbandonedArchivedSymfony-bundle

liip/magento-bundle
===================

Integrate Magento into Symfony2 applications

6512315[3 issues](https://github.com/liip/LiipMagentoBundle/issues)PHP

Since Dec 5Pushed 8y ago64 watchersCompare

[ Source](https://github.com/liip/LiipMagentoBundle)[ Packagist](https://packagist.org/packages/liip/magento-bundle)[ RSS](/packages/liip-magento-bundle/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

UNMAINTAINED
============

[](#unmaintained)

This bundle is no longer maintained. Feel free to fork it if needed.

MagentoBundle
=============

[](#magentobundle)

Integrate Magento into Symfony2 applications.

The Bundle is still a work in progress but the goal is to be able to talk to Magento from inside Symfony. This means that Magento app is initialized inside Symfony2, to share a single session, enable reusing Magento login in Symfony2 and reading content and layout from Magento.

Installation
============

[](#installation)

1. Add the following lines in your deps file:

    ```
    [LiipMagentoBundle]
        git=http://github.com/liip/LiipMagentoBundle.git
        target=/bundles/Liip/MagentoBundle

    ```
2. Run the vendors script:

    ```
    $ php bin/vendors install

    ```
3. Add the Liip namespace to your autoloader:

    ```
    // app/autoload.php
    $loader->registerNamespaces(array(
        'Liip' => __DIR__.'/../vendor/bundles',
        // your other namespaces
    ));

    ```
4. Add the bundle to your application kernel:

    ```
    // app/AppKernel.php
    public function registerBundles()
    {
        return array(
            // ...
            new Liip\MagentoBundle\LiipMagentoBundle(),
            // ...
        );
    }

    ```
5. Configure the bundle

    See *Configuration*
6. Fix the Magento autoloader

    ```
    $ cd $MAGENTO_DIR
    $ patch -p0 < $SYMFONY_DIR/vendor/bundles/Liip/MagentoBundle/magento-autoloader.patch

    ```

Configuration
=============

[](#configuration)

```
# app/config/config.yml
framework:
    session:
        # use the Magento session handler
        storage_id: liip_magento.session.storage

liip_magento:
    # path to the Mage.php file
    mage_file:  %kernel.root_dir%/../../magento/app/Mage.php
    # not for all store resolvers, mapping to store code
    store_mappings:
        de: de
        en: en
        fr: en

```

```
# app/config/security.yml
security:
    factories:
        - "%kernel.root_dir%/../vendor/bundles/Liip/MagentoBundle/Resources/config/security_factories.xml"

    providers:
        magento:
            id: security.user.provider.magento

    firewalls:
        secured_area:
            pattern:    ^/
            anonymous: ~
            magento:
                provider:   magento
                check_path: /login_check
                login_path: /login
            logout:
                path:   /logout
                target: /

```

Usage
=====

[](#usage)

Store Resolver
--------------

[](#store-resolver)

For accessing customer data we need the correct Magento store to be initialized. Magento loads the default store which can be configured for the respective group. You can go to `System > Manage Stores`then open the item which is in the «Store Name» row (which is actually the group) and select the «Default Store View».

Store resolvers do figure out which Magento store to initialize. Whenever it can't determine a store it keeps the default one. Also, if it fails setting the resolved store it goes back to the default store.

The default store resolver is `LocaleStore` which uses the symfony locale as store code. In case your store codes do not match the locales you need to use the `LocaleStoreResolver` which allows you to configure the mapping with `store_mappings` of the locale to the store code. This also helps if you need multiple fallback stores depending on the locale.

For more customized resolvers you may also write your own by implementing `StoreResolverInterface`. In that case the default resolver service can be overritten as follows:

```
# app/config/config.yml
liip_magento:
    service:
        store_resolver: my.store_resolver.id

```

Retrieving Data and HTML from Magento
-------------------------------------

[](#retrieving-data-and-html-from-magento)

In this demo we load the footer block and the number of items in the Magento cart

```
class MagentoController extends Controller
{
    /**
     * @Template()
     */
    public function indexAction()
    {
        $block = \Mage::getSingleton('core/layout');
        $footer = $block->createBlock('page/html_footer');
        $footer->setTemplate('page/html/footer.phtml');

        $cart = \Mage::helper('checkout/cart')->getCart()->getItemsCount();
        return array('cart' => $cart, 'footer' => $footer->toHTML());
    }
}

```

Template-snippet for the demo:

```
{% block content %}

    You have {{ cart }} items in your cart!

    {{ footer | raw}}
{% endblock %}

```

Listening to Magento events
===========================

[](#listening-to-magento-events)

Using the [Magento Symfony module](https://github.com/pulse00/Magento-Symfony-Module) you can listen to events dispatched by Magento inside your Symfony application.

Here's an example to handle the `customer_address_save_after` event, e.g. to synchronize your CRM backend with Magento customers:

Register your listener in Symfony

```
services:
    acme_demo_bundle.customer_save_after:
        class: %acme_demo_bundle.customer_save_after.class%
        arguments: [ @some_service_id ]
        tags:
            - { name: kernel.event_listener, event: mage.customer_save_after, method: synchronize }
```

Dispatch the event in Magento:

```

            0.1.0

                      singleton
                      MyModule_Core_Customer_Synchronizer
                      synchronize

```

```
