East Common

Créer des sites web tout en suivant la philosophie #East programming.


Package pour fournir des outils pour créer des applications (webapp, site Web et wrokers) avec East Foundation. Il fournit une gestion des utilisateurs et des médias et fournit des services persistants et des services d'interrogation de bases de données agnostiques (prend actuellement en charge MongoDB et Doctrine ODM mais il est compatible avec Doctrine DBAL et ORM ou toute autre bibliothèque persistante)

Common prend également en charge le rendu des templates et de twig et fournit des outils pour faciliter la transmission des objets des Recipe aux vues. Des outils pour minifier sans webpack les assets à envoyer aux navigateurs (Javascript et CSS), pour éviter d'installer NPM sur un environnement PHP complet, sont également fournis dans ce package.

Common est sans framework et peut être facilement intégré à n'importe quel framework PSR 7. Un panneau d'administration est fourni sur Symfony 6.4+ et Recipe pour gérer tout objet persistant.

Une implémentation avec Symfony est également proposée par défaut.

Workflow requete HTTP

Fonctionnalités


MongoDb

Tous les contenus sont stockés sur MongoDb.

sf

Symfony 6.4

Utilisable avec Symfony 6.4+.

PSR-11

Interopérable avec tout framework implémentant la recommandation PSR 11.

Extensible

Grâce à Recipe, peut être complété via la configuration de la DI.

GitHub


Cloner le projet sur GitHub

Projet sous licence open source! Hébergé, développé et maintenu sur GitHub.


Voir le projet sur GitHub

Patreon


Supporter le projet sur Patreon

Ce projet est logiciel libre et le restera, mais son développement a un coût. Si vous l'appréciez et si vous souhaitez nous aider à le maintenir et à le faire évoluer. N'hésitez pas à nous supporter sur Patreon.


Supporter le p[rojet

Exemple


#These operations are not required with teknoo/east-common-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/doctrine/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/di.php'
    import:
        Doctrine\Persistence\ObjectManager: 'doctrine_mongodb.odm.default_document_manager'
 
#bundles.php
...
Teknoo\DI\SymfonyBridge\DIBridgeBundle::class => ['all' => true],
Teknoo\East\FoundationBundle\EastFoundationBundle::class => ['all' => true],
Teknoo\East\CommonBundle\TeknooEastCommonBundle::class => ['all' => true],
 
#In doctrine config (east_common_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'
                TeknooEastCommonDoctrine:
                    type: 'xml'
                    dir: '%kernel.project_dir%/vendor/teknoo/east-common/infrastructures/doctrine/config/doctrine'
                    is_bundle: false
                    prefix: 'Teknoo\East\Common\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/common.yaml
admin_common:
    resource: '@TeknooEastCommonBundle/Resources/config/admin_routing.yaml'
    prefix: '/admin'

common:
    resource: '@TeknooEastCommonBundle/Resources/config/routing.yaml'