East Website
Create PHP Website following the #East programming philosophy.
Package, to use with East Foundation, to implement a basic CMS able to manage page with several types of pages (and layout, categories (menus). Each publishable contents (pages / contents and menus) are translatable.
This package is also built on MongoDb (and Doctrine ODM) to persist all contents into a MongoDB database, but it can be configured to use other system. The translating behavior come from the Doctrine Extension Gedmo, but the translation extension has been fully reworking and rewrited and included to this package (Gedmo is not required). This feature is now provided by the package East Translation, bundled with this package.
East Website is framework free, and can be easily integrated with any framework. An administration panel is provided on Symfony 6.4+.
A default integration to Symfony is available.
This website is built on this package with Symfony 6.4.
Features
MongoDb
All dynamics contents are stored into a MongoDb.
Symfony 6.4
Usable with Symfony 6.4+.
PSR-11
Interoperable with any framework implementing the PSR-11 recommendation.
Extendable
Thanks to Recipe, can be extendable only via the DI's configuration.
Fork the project on GitHub
It is open source! Hosted, developed, and maintained on GitHub.
View GitHub Project
Support this project on Patreon
This project is free and will remain free, but its development is not. If you like it and help us maintain it and evolve it, don't hesitate to support us on Patreon.
Support it
Example
//These operations are not reauired with teknoo/east-website-symfony //config/packages/di_bridge.yaml: di_bridge: compilation_path: '%kernel.project_dir%/var/cache/phpdi' definitions: - '%kernel.project_dir%/config/di.php' //config/packages/east_foundation.yaml: di_bridge: definitions: - '%kernel.project_dir%/vendor/teknoo/east-foundation/src/di.php' - '%kernel.project_dir%/vendor/teknoo/east-foundation/infrastructures/symfony/Resources/config/di.php' - '%kernel.project_dir%/vendor/teknoo/east-foundation/infrastructures/symfony/Resources/config/laminas_di.php' import: Psr\Log\LoggerInterface: 'logger' //config/packages/east_common_di.yaml: di_bridge: definitions: - '%kernel.project_dir%/vendor/teknoo/east-common/src/di.php' - '%kernel.project_dir%/vendor/teknoo/east-common/infrastructures/symfony/Resources/config/di.php' - '%kernel.project_dir%/vendor/teknoo/east-common/infrastructures/symfony/Resources/config/laminas_di.php' - '%kernel.project_dir%/vendor/teknoo/east-common/infrastructures/doctrine/di.php' - '%kernel.project_dir%/vendor/teknoo/east-common/infrastructures/di.php' import: Doctrine\Persistence\ObjectManager: 'doctrine_mongodb.odm.default_document_manager' //config/packages/east_website_di.yaml: di_bridge: definitions: - '%kernel.project_dir%/vendor/teknoo/east-website/src/di.php' - '%kernel.project_dir%/vendor/teknoo/east-website/infrastructures/doctrine/di.php' //bundles.php ... Teknoo\DI\SymfonyBridge\DIBridgeBundle::class => ['all' => true], Teknoo\East\FoundationBundle\EastFoundationBundle::class => ['all' => true], Teknoo\East\CommonBundle\TeknooEastCommonBundle::class => ['all' => true], Teknoo\East\WebsiteBundle\TeknooEastWebsiteBundle::class => ['all' => true], //In doctrine config (east_website_doctrine_mongodb.yaml) doctrine_mongodb: document_managers: default: auto_mapping: true mappings: TeknooEastCommon: type: 'xml' dir: '%kernel.project_dir%/vendor/teknoo/east-common/infrastructures/doctrine/config/universal' is_bundle: false prefix: 'Teknoo\East\Common\Object' TeknooEastWebsite: type: 'xml' dir: '%kernel.project_dir%/vendor/teknoo/east-website/infrastructures/doctrine/config/universal' is_bundle: false prefix: 'Teknoo\East\Website\Object' TeknooEastWebsiteDoctrine: type: 'xml' dir: '%kernel.project_dir%/vendor/teknoo/east-website/infrastructures/doctrine/config/doctrine' is_bundle: false prefix: 'Teknoo\East\Website\Doctrine\Object' //In security.yaml security: providers: with_password: id: 'Teknoo\East\CommonBundle\Provider\PasswordAuthenticatedUserProvider' password_hashers: Teknoo\East\CommonBundle\Object\PasswordAuthenticatedUser: algorithm: '%teknoo.east.common.bundle.password_authenticated_user_provider.default_algo%' //In routes/website.yaml admin_website: resource: '@TeknooEastWebsiteBundle/Resources/config/admin_routing.yaml' prefix: '/admin' admin_common: resource: '@TeknooEastCommonBundle/Resources/config/admin_routing.yaml' prefix: '/admin' website: resource: '@TeknooEastWebsiteBundle/Resources/config/routing.yaml'