2017 © Pedro Peláez
 

symfony-bundle aimeos-symfony2

Full-featured Symfony web shop bundle and e-commerce solution for high performance shops

image

aimeos/aimeos-symfony2

Full-featured Symfony web shop bundle and e-commerce solution for high performance shops

  • Tuesday, July 10, 2018
  • by aimeos
  • Repository
  • 16 Watchers
  • 95 Stars
  • 670 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 31 Forks
  • 0 Open issues
  • 67 Versions
  • 2 % Grown

The README.md

Aimeos logo , (*1)

Aimeos Symfony bundle

Total Downloads Build Status Coverage Status Scrutinizer Code Quality, (*2)

:star: Star us on GitHub — it helps!, (*3)

Aimeos is THE professional, full-featured and ultra fast e-commerce package for Symfony! You can install it in your existing Symfony application within 5 minutes and can adapt, extend, overwrite and customize anything to your needs., (*4)

Aimeos Symfony demo, (*5)

Table of content

Installation

This document is for the latest Aimeos 2023.10 and Symfony 6.3+., (*6)

If you want to upgrade between major versions, please have a look into the upgrade guide!, (*7)

The Aimeos Symfony e-commerce bundle is a composer based library that can be installed easiest by using Composer. If you don't have an existing Symfony application, you can create a skeleton application using, (*8)

composer create-project symfony/website-skeleton:~4.4 myshop
cd myshop

These settings need to be added to the ./config/packages/fos_user.yaml file:, (*9)

fos_user:
    db_driver: orm
    user_class: Aimeos\ShopBundle\Entity\FosUser
    firewall_name: aimeos_myaccount
    from_email:
        address: "me@example.com"
        sender_name: "Test shop"
    service:
        mailer: 'fos_user.mailer.noop'

The Aimeos components have to be configured as well to get authentication working correctly. You need to take care of three things: Using the correct customer manager implementation and password encryption method as well as the right path for the storages. All must be appended at the end of the ./config/packages/aimeos_shop.yaml:, (*10)

aimeos_shop:
    resource:
        fs:
            baseurl: "https://yourdomain.com/"
            basedir: "%kernel.project_dir%/public"
        fs-admin:
            basedir: "%kernel.project_dir%/public/uploads"
    mshop:
        customer:
            manager:
                name: FosUser
                password:
                    name: Bcrypt

To configure the Aimeos routing, create the file ./config/routes/aimeos_shop.yaml with these lines:, (*11)

aimeos_shop:
    resource: "@AimeosShopBundle/config/routing.yaml"

The same applies for the FosUser bundle. Create the file ./config/routes/fos_user.yaml containing:, (*12)

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

Make sure that the database is set up and it is configured in your ./config/packages/doctrine.yaml:, (*13)

parameters:
    env(DATABASE_URL): ''
    database_host: <your host/ip>
    database_port: <your port>
    database_name: <your database>
    database_user: <db username>
    database_password: <db password>

Also, you have to configure your database credentials in the .env file:, (*14)

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name, (*15)

If you want to use a database server other than MySQL, please have a look into the article about supported database servers and their specific configuration., (*16)

If you don't use Sendmail but SMTP for sending e-mails, you have to adapt the MAILER_URL configuration in your .env file, e.g.:, (*17)

MAILER_URL=smtp://smtp.mailtrap.io:2525?encryption=tls&auth_mode=login&username=...&password=..., (*18)

Composer

Then add these lines to your composer.json of your Symfony project:, (*19)

    "prefer-stable": true,
    "minimum-stability": "dev",
    "require": {
        "aimeos/aimeos-symfony": "~2023.10",
        "friendsofsymfony/user-bundle": "^3.2",
        ...
    },
    "scripts": {
        "post-install-cmd": [
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::installBundle",
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::setupDatabase",
            ...
        ],
        "post-update-cmd": [
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::installBundle",
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::setupDatabase",
            ...
        ]
    }

Afterwards, install the Aimeos shop bundle using, (*20)

composer update, (*21)

In a production environment or if you don't want that the demo data gets installed, use the --no-dev option:, (*22)

SYMFONY_ENV=prod composer update --no-dev, (*23)

If you get an exception that the SensioGeneratorBundle isn't found, follow the steps described in the Aimeos Symfony forum post, (*24)

Start the PHP web server in the base directory of your application to do some quick tests:, (*25)

php -S 127.0.0.1:8000 -t public, (*26)

Then, you should be able to call the catalog list page in your browser using, (*27)

http://127.0.0.1:8000/shop, (*28)

Login and Admin

Setting up the administration interface is a matter of configuring the Symfony firewall to restrict access to the admin URLs., (*29)

Setting up the security configuration is the most complex part. The firewall setup in ./config/packages/security.yaml should look like this one:, (*30)

security:
    providers:
        aimeos:
            entity: { class: Aimeos\ShopBundle\Entity\FosUser, property: username }

    password_hashers:
        Aimeos\ShopBundle\Entity\FosUser: bcrypt

    firewalls:
        aimeos_admin:
            pattern: ^/admin
            provider: aimeos
            form_login:
                login_path: /admin
                check_path: /admin_check
        aimeos_myaccount:
            pattern: ^/
            form_login:
                provider: aimeos
                csrf_token_generator: security.csrf.token_manager
            logout: true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/profile, roles: ROLE_USER }
        - { path: ^/admin/.+, roles: [ROLE_ADMIN, ROLE_SUPER_ADMIN] }

Caution: The order of the configuration settings in this file is important!, (*31)

These settings will protect the /admin/* URLs from unauthorized access from someone without admin privileges., (*32)

The /profile URL is protected by the FOS user bundle as well, which also offers user registration., (*33)

As last step, you have to create an admin account using the Symfony command line:, (*34)

./bin/console aimeos:account --admin me@mydomain.com

The e-mail address is the user name for login and the account will work for the frontend too. To protect the new account, the command will ask you for a password. The same command can create limited accounts by using "--editor" instead of "--admin". If you use "--super" the account will have access to all sites., (*35)

If the PHP web server is still running (php -S 127.0.0.1:8000 -t public), you should be able to call the admin login page in your browser using, (*36)

http://127.0.0.1:8000/admin, (*37)

and authenticating with your e-mail and the password which has been asked for by the aimeos:account command., (*38)

Hints

To simplify development, you should configure to use no content cache. You can do this by adding these lines to ./config/packages/aimeos_shop.yaml:, (*39)

aimeos_shop:
    madmin:
        cache:
            manager:
                name: None

License

The Aimeos Symfony bundle is licensed under the terms of the MIT license and is available for free., (*40)

The Versions