teknoo / east-website
通用包,遵循#East编程哲学,基于Teknoo/East-Foundation(和Teknoo/Recipe)构建,并实现一个基本的CMS来展示不同类型和模板的动态页面。
Requires
- php: ^8.2
- ext-json: *
- php-di/php-di: ^7.0.6
- teknoo/east-common: ^2.12
- teknoo/east-foundation: ^7.7
- teknoo/immutable: ^3.0.17
- teknoo/recipe: ^5.1
- teknoo/states: ^6.3
Requires (Dev)
- ext-mongodb: *
- ext-simplexml: *
- behat/behat: ^3.13
- doctrine/common: ^3.4.3
- doctrine/mongodb-odm: ^2.6.2
- doctrine/mongodb-odm-bundle: ^4.7||^5
- doctrine/persistence: ^3.2
- icanhazstring/composer-unused: ^0.8.11
- knpuniversity/oauth2-client-bundle: ^2.18
- laminas/laminas-diactoros: ^3.3
- league/oauth2-client: ^2.7
- league/uri: ^7.4
- nikic/php-parser: ^4.18||^5
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.10.63
- phpunit/phpunit: ^10.5.10||^11
- psr/cache: ^3.0
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.8
- symfony/config: ^6.3||^7
- symfony/console: ^6.3||^7
- symfony/dependency-injection: ^6.3||^7
- symfony/error-handler: ^6.3||^7
- symfony/finder: ^6.3||^7
- symfony/form: ^6.3||^7
- symfony/html-sanitizer: ^6.3||^7
- symfony/http-kernel: ^6.3||^7
- symfony/options-resolver: ^6.3||^7
- symfony/password-hasher: ^6.3||^7
- symfony/property-access: ^6.3||^7.0
- symfony/psr-http-message-bridge: ^2.3.1||^6.4||^7
- symfony/routing: ^6.3||^7
- symfony/security-bundle: ^6.3||^7
- symfony/security-core: ^6.3||^7
- symfony/security-http: ^6.3||^7
- symfony/translation: ^6.3||^7
- symfony/var-dumper: ^6.3||^7
- symfony/var-exporter: ^6.3||^7
- symfony/yaml: ^6.3||^7
- teknoo/bridge-phpdi-symfony: ^6.0.4
- twig/twig: ^3.8
Conflicts
- doctrine/persistence: <3.0
- dev-master
- 9.2.3
- 9.2.2
- 9.2.1
- 9.2.0
- 9.1.12
- 9.1.11
- 9.1.10
- 9.1.9
- 9.1.8
- 9.1.7
- 9.1.6
- 9.1.5
- 9.1.4
- 9.1.3
- 9.1.2
- 9.1.1
- 9.1.0
- 9.0.3
- 9.0.2
- 9.0.1
- 9.0.0
- 8.6.5
- 8.6.4
- 8.6.3
- 8.6.2
- 8.6.1
- 8.6.0
- 8.5.1
- 8.5.0
- 8.4.3
- 8.4.2
- 8.4.1
- 8.4.0
- 8.3.6
- 8.3.5
- 8.3.4
- 8.3.3
- 8.3.2
- 8.3.1
- 8.3.0
- 8.2.0
- 8.1.1
- 8.1.0
- 8.0.7
- 8.0.6
- 8.0.5
- 8.0.4
- 8.0.3
- 8.0.2
- 8.0.1
- 8.0.0
- 8.0.0-beta1
- 7.0.3
- 7.0.2
- 7.0.1
- 7.0.0
- 7.0.0-beta5
- 7.0.0-beta4
- 7.0.0-beta3
- 7.0.0-beta2
- 7.0.0-beta1
- 6.1.10
- 6.1.9
- 6.1.7
- 6.1.6
- 6.1.5
- 6.1.4
- 6.1.3
- 6.1.1
- 6.1.0
- 6.0.3
- 6.0.2
- 6.0.1
- 6.0.0
- 6.0.0-rc1
- 6.0.0-beta8
- 6.0.0-beta7
- 6.0.0-beta6
- 6.0.0-beta5
- 6.0.0-beta4
- 6.0.0-beta3
- 6.0.0-beta1
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.0
- 4.1.7
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-beta4
- 3.0.0-beta3
- 3.0.0-beta2
- 3.0.0-beta1
- 2.1.2
- 2.1.1
- 2.1.0
- 2.1.0-beta6
- 2.1.0-beta5
- 2.1.0-beta4
- 2.1.0-beta3
- 2.1.0-beta2
- 2.1.0-beta1
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-beta7
- 2.0.0-beta6
- 2.0.0-beta5
- 2.0.0-beta4
- 2.0.0-beta3
- 2.0.0-beta2
- 2.0.0-beta1
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.15
- 0.0.14
- 0.0.13
- 0.0.12
- 0.0.11
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.7-beta3
- 0.0.7-beta2
- 0.0.7-beta1
- 0.0.6
- 0.0.6-beta4
- 0.0.6-beta3
- 0.0.6-beta2
- 0.0.6-beta1
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- 0.0.1-beta8
- 0.0.1-beta7
- 0.0.1-beta6
- 0.0.1-beta5
- 0.0.1-beta4
- 0.0.1-beta3
- 0.0.1-beta2
- 0.0.1-beta1
This package is auto-updated.
Last update: 2024-09-22 10:17:45 UTC
README
通用包,遵循#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的活动支持。如果您喜欢它并帮助我维护和改进它,请毫不犹豫地在Patreon或Github上支持我。
谢谢 :) 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
中删除(Salt
、LegacyUser
) - 对于可调用对象,使用
(...)
表示法而不是数组表示法 - 在前端端点启用纤维支持
QueryInterface
已拆分为QueryElementInterface
和QueryCollectionInterface
以区分仅获取单个元素或标量值的查询以及对象集合的查询。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中的密码逻辑,用于LegacyUser
和PasswordAuthenticatedUser
。 AbstractUser
也可以用于非密码验证的用户。- 创建
PasswordAuthenticatedUser
以实现新的Symfony接口PasswordAuthenticatedUserInterface
- 更新Symfony中的
SymfonyUserWriter
实现,仅在需要时哈希密码。 - 重新工作
UserProvider
到PasswordAuthenticatedUserProvider
,以返回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\ObjectInterface
和Teknoo\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 上分叉它