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.

Website illustration

Features


MongoDb

All dynamics contents are stored into a MongoDb.

sf

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.

GitHub


Fork the project on GitHub

It is open source! Hosted, developed, and maintained on GitHub.


View GitHub Project

Patreon


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'