teknoo/east-website

通用包,遵循#East编程哲学,基于Teknoo/East-Foundation(和Teknoo/Recipe)构建,并实现一个基本的CMS来展示不同类型和模板的动态页面。

9.2.3 2024-06-03 07:41 UTC

This package is auto-updated.

Last update: 2024-09-22 10:17:45 UTC


README

Latest Stable Version Latest Unstable Version Total Downloads License PHPStan

通用包,遵循#East编程哲学,基于Teknoo/East-Foundation(和Teknoo/Recipe)构建,并实现一个基本的CMS来展示不同类型和模板的动态页面。

Symfony示例

//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'

支持此项目

本项目免费且将保持免费。它完全由EIRL的活动支持。如果您喜欢它并帮助我维护和改进它,请毫不犹豫地在PatreonGithub上支持我。

谢谢 :) Richard.

致谢

EIRL Richard Déloge - https://deloge.io - 首席开发者。SASU Teknoo Software - https://teknoo.software

关于Teknoo Software

Teknoo Software 是一家PHP软件编辑公司,由Richard Déloge创立,作为EIRL Richard Déloge的一部分。Teknoo Software的目标:为我们合作伙伴和社区提供一套高质量的服务或软件,共享知识和技能。

许可证

East Website采用MIT许可证 - 有关详细信息,请参阅许可证文件夹。

安装与要求

要使用composer安装此库,请运行此命令

composer require teknoo/east-website

要使用Symfony开始一个项目

symfony new your_project_name new
composer require teknoo/composer-install
composer require teknoo/east-website-symfony    

此库需要

* PHP 8.1+
* A PHP autoloader (Composer is recommended)
* Teknoo/Immutable.
* Teknoo/States.
* Teknoo/Recipe.
* Teknoo/East-Foundation.
* Optional: Symfony 6.3+ (for administration)

关于Teknoo Website 9.x的新闻

此库需要PHP 8.1或更高版本,并且仅与Symfony 6.3或更高版本兼容。

  • 支持最新的PHP DI 7和Diactoros 3
  • 借助tidy自动清理渲染的HTML

关于Teknoo Website 8.x的新闻

此库需要PHP 8.1或更高版本,并且仅与Symfony 6.2或更高版本兼容。

  • 用户和媒体已迁移到East Common
  • 动态文本可以通过Symfony Sanitizer进行清理(如果您使用Symfony表单)
    • 您可以持久化直接清理的内容
    • 添加辅助函数以直接获取这些清理的内容
  • 添加ReadOnlyArray以模拟只读数组'
  • 菜单生成器的优化

关于Teknoo Website 7.x的新闻

此库需要PHP 8.1或更高版本,并且仅与Symfony 6.0或更高版本兼容。

  • 支持Recipe 4.1.1+
  • 支持East Foundation 6.0.1+
  • 公共常量是最终的
  • 块类型是枚举
  • 方向是枚举
  • 在不可变对象上使用只读属性行为
  • 移除对已弃用功能的支持,这些功能已从Symfony 6.0中删除(SaltLegacyUser
  • 对于可调用对象,使用(...)表示法而不是数组表示法
  • 在前端端点启用纤维支持
  • QueryInterface已拆分为QueryElementInterfaceQueryCollectionInterface以区分仅获取单个元素或标量值的查询以及对象集合的查询。
  • LoaderInterface::query方法仅用于QueryCollectionInterface查询。
  • QueryElementInterface查询提供了一个新的方法LoaderInterface::fetch
  • 警告*:从本版本开始不再支持所有旧版用户。用户的盐值也不受支持,所有用户的密码在切换到本版本之前都必须进行转换。

来自Teknoo网站的6.x版本新闻

此库需要PHP 8.0或更高版本,并且仅与Symfony 5.3或更高版本兼容

  • 添加UserInterface以在Eastt网站/ WebApp中表示用户。
  • 添加AuthDataInterface以表示任何数据/凭证,能够验证用户
  • 更新User类以遵循先前接口
  • 将认证数据从User类拆分到一个专用类StoredPassword
  • 支持已哈希的密码存储在StoredPassword
  • 更新关于User的Doctrine ODM映射并添加StoredPassword
  • 支持第三方认证。
  • 添加ThirdPartyAuth以存储第三方认证所需的ID数据。
  • 添加AbstractPassordAuthUser以封装Symfony User中的密码逻辑,用于LegacyUserPasswordAuthenticatedUser
  • AbstractUser也可以用于非密码验证的用户。
  • 创建PasswordAuthenticatedUser以实现新的Symfony接口PasswordAuthenticatedUserInterface
  • 更新Symfony中的SymfonyUserWriter实现,仅在需要时哈希密码。
  • 重新工作UserProviderPasswordAuthenticatedUserProvider,以返回LegacyUser(如果用户使用带有slug的旧版Symfony行为)或PasswordAuthenticatedUser。它能够将已登录用户迁移到新行为,更新通过Symfony传递的哈希密码并删除盐。
  • 在PHPDoc中进行一些质量保证修复
  • 删除已弃用的ViewParameterInterface
  • 删除已弃用的Symfony User
  • 创建StoredPasswordType以在Symfony表单中管理新用户。
  • 修复admin路由中的某些错误。
  • 更新并修复Doctrinemapping中的一些小错误。
  • 创建基于KNPU OAuth2客户端包的OAuth2Authenticator,通过OAuth2提供者进行用户认证。

来自Teknoo网站5.x版本的新闻

此库需要PHP 8.0或更高版本,并且仅与Symfony 5.2或更高版本兼容

  • 迁移到PHP 8.0
  • 作家服务、删除服务和接口也使用Teknoo\East\Common\Contracts\Object\ObjectInterface
  • 创建Teknoo\East\Common\Contracts\Object\ObjectInterfaceTeknoo\East\Common\Contracts\Object\IdentifiedObjectInterface,它扩展了专用接口,用于非持久化对象,可由其他组件操作。
  • 更新步骤和表单接口以使用此新接口
  • 将ServerRequestInterface替换为MessageInterface用于ListObjectAccessControlInterface和ObjectAccessControlInterface
  • 将渲染步骤切换到MessageInterface
  • 添加ExprConversionTrait::addExprMappingConversion以允许自定义表达式评估
  • 添加ObjectReference表达式以过滤引用
  • 创建Object步骤有一个新的参数$workPlanKey,用于自定义用于在工作计划中存储新对象的关键字
  • 创建Object、DeleteObject、LoadObject、SaveObject和SlugPreparation使用Teknoo\East\Common\Contracts\Object\ObjectInterface而不是Teknoo\East\Common\Contracts\Object\IdentifiedObjectInterface。SaveObject仅在对象实现此最后一个对象时才传递ID。

来自Teknoo网站4.x版本的新闻

此库需要PHP 7.4或更高版本,并且仅与Symfony 4.4或更高版本兼容

  • 迁移到Recipe 2.3+和Tekno 3.3
  • 将所有经典服务端点迁移到Cookbook和Recipe。
  • 删除主命名空间中的所有特质以及在基础设施命名空间中的实现。
  • 所有食谱和食谱,以及步骤的主要部分都在主命名空间中定义,只有专门的步骤在基础设施命名空间中定义。
  • 删除AdminEditEndPoint、AdminListEndPoint、AdminNewEndPoint、ContentEndPointTrait和MediaEndPointTrait。
  • 更新Symfony配置以管理此新架构。删除为每个对象在网站中指定的所有服务,替换为仅通用的端点。所有配置都通过路由传递。

来自Teknoo网站3.x版本的新闻

此库需要PHP 7.4或更高版本,并且仅与Symfony 4.4或更高版本兼容

  • 迁移到Doctrine ODM 2
  • 迁移到新的GridFS存储库
  • 将Gedmo的Timestamp迁移到内部功能和服务的功能
  • 将 Gedmo 的 Slug 功能迁移到 intern 函数和服务
  • 迁移到 Doctrine XML 映射
  • 重新工作翻译:基于 Gedmo 翻译,清理、简化、重新构思,符合东方哲学
  • 移除 Gedmo
  • 创建新的翻译配置
  • 分页查询支持计数
  • ContentType 和 ItemType 不是硬编码使用 DocumentType,而是通过 EndPoint 传入的选项中的类型
  • 优化菜单以限制请求
  • 支持 Express In Agnostic
  • 更改 Doctrine 仓库行为以创建专门的 ODM 类
  • 为非 ODM 创建通用仓库并具有回退功能
  • 在 DI 中自动选择好的仓库
  • 将 MediaEndPoint 迁移到 ODM 命名空间
  • 添加 ProxyDetectorInterface 并将片段添加到 DI 中,以无差别地检测对象是否位于代理后面
  • 需要 East Foundation 3.0.0
  • 修复服务定义中的错误
  • 将异常管理改为 MediaEndPoint

来自 Teknoo 网站 2.x 的新闻

此库需要 PHP 7.4 或更高版本,并且仅与 Symfony 4.4 或更高版本兼容,某些更改可能导致向后兼容性中断

  • PHP 7.4 是最低要求
  • 用 "..." 运算符替换 array_merge
  • 删除一些无用的 PHP DocBlocks
  • 切换到类型属性
  • 大多数方法都已更新,包括适用时的类型提示。请检查您的扩展点,以确保函数签名正确。_ 所有文件使用严格的类型。请确保不要依赖类型转换。
  • 为对象设置默认值。
  • 将 PHP-DI 中定义的依赖项作为合成服务设置为 Symfony 的服务定义,以避免与 Symfony 4.4 产生编译错误
  • 在 QA 工具中启用 PHPStan 并禁用 PHPMd
  • 启用针对支持 Stated 类的 PHPStan 扩展

贡献:)

欢迎您为此项目做出贡献。 在 Github 上分叉它