Inspired by loevgaard/SyliusBrandPlugin
Install the plugin via Composer:
composer require acseo/sylius-brand-plugin
Enable the plugin in your config/bundles.php:
return [
// ...
ACSEO\SyliusBrandPlugin\ACSEOSyliusBrandPlugin::class => ['all' => true],
];
Update your Product entity to use the ProductTrait provided by the plugin and implement ProductInterface:
<?php
declare(strict_types=1);
namespace App\Entity\Product;
use ACSEO\SyliusBrandPlugin\Entity\ProductTrait;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Component\Core\Model\Product as BaseProduct;
use ACSEO\SyliusBrandPlugin\Entity\ProductInterface;
#[ORM\Entity]
#[ORM\Table(name: 'sylius_product')]
class Product extends BaseProduct implements ProductInterface
{
use ProductTrait;
}
For a comprehensive guide on Sylius Plugins development please go to Sylius documentation, there you will find the Plugin Development Guide, that is full of examples.
Run composer create-project sylius/plugin-skeleton ProjectName
.
-
From the plugin skeleton root directory, run the following commands:
$ (cd tests/Application && yarn install) $ (cd tests/Application && yarn build) $ (cd tests/Application && APP_ENV=test bin/console assets:install public) $ (cd tests/Application && APP_ENV=test bin/console doctrine:database:create) $ (cd tests/Application && APP_ENV=test bin/console doctrine:schema:create) # Optionally load data fixtures $ (cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load --no-interaction)
To be able to set up a plugin's database, remember to configure your database credentials in tests/Application/.env
and tests/Application/.env.test
.
-
Run your local server:
symfony server:ca:install APP_ENV=test symfony server:start --dir=tests/Application/public --daemon
-
Open your browser and navigate to
https://localhost:8000
.
-
Execute
make init
to initialize the container and install the dependencies. -
Execute
make database-init
to create the database and run migrations. -
(Optional) Execute
make load-fixtures
to load the fixtures. -
Your app is available at
http://localhost
.
-
PHPUnit
vendor/bin/phpunit
-
PHPSpec
vendor/bin/phpspec run
-
Behat (non-JS scenarios)
vendor/bin/behat --strict --tags="~@javascript&&~@mink:chromedriver"
-
Behat (JS scenarios)
-
Start Headless Chrome:
google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1
- Install SSL certificates (only once needed) and run test application's webserver on
127.0.0.1:8080
:
symfony server:ca:install APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
- Run Behat:
vendor/bin/behat --strict --tags="@javascript,@mink:chromedriver"
-
Static Analysis
-
PHPStan
vendor/bin/phpstan analyse -c phpstan.neon -l max src/
-
-
Coding Standard
vendor/bin/ecs check
-
Using
test
environment:(cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load) (cd tests/Application && APP_ENV=test bin/console server:run -d public)
-
Using
dev
environment:(cd tests/Application && APP_ENV=dev bin/console sylius:fixtures:load) (cd tests/Application && APP_ENV=dev bin/console server:run -d public)