luccpl / sonata
Requires
- doctrine/collections: ^2.2
- luccpl/orkestra: dev-release/1.1.0
Requires (Dev)
- doctrine/dbal: ^4.0
- doctrine/migrations: ^3.7
- doctrine/orm: ^3.1
- laravel/pint: ^1.16
- pestphp/pest: ^2.34
- phpstan/phpstan: ^1.11
- symfony/cache: ^7.0
This package is auto-updated.
Last update: 2024-09-21 01:51:18 UTC
README
Sonata 是 Orkestra 中持久层的基包,在 Orkestra 中提供身份验证、会话管理和可选的通过 Doctrine ORM 进行数据库交互的基本功能。
安装
要安装 Sonata,请使用 Composer
composer require luccpl/sonata
配置
会话管理
Sonata 提供了一个会话接口,目前支持 PHP 的默认会话处理。要使用它,请在提供者列表中注册 Sonata\Sessions\SessionsProvider
。
身份验证配置
要配置身份验证守卫,请添加 sonata.auth_guards
配置。此配置将守卫键映射到相应的驱动程序和存储库
$app->config()->set('sonata.auth_guards', [ 'guard_key' => [ 'driver' => 'session', // the driver to use for authentication 'repository' => YourRepository::class, // An implementation of Sonata\Repositories\Interfaces\Partials\IdentifiableRepositoryInterface ], ]);
使用 sonata.default_guard
配置设置默认身份验证守卫
['sonata.default_guard', 'guard_key'];
自定义会话接口
可选地,您可以通过设置 sonata.session
配置来更改会话接口
['sonata.session', YourCustomSessionInterface::class];
添加中间件
在注册会话提供者后,您将能够访问 auth
中间件,该中间件可用于使用现有守卫保护路由
return function (RouterInterface $router): void { $router->get('/protected', function ($request, $response) { return ['message' => 'This is a protected route']; })->middleware('auth'); };
可选地,您可以指定一个守卫键来使用特定的守卫
return function (RouterInterface $router): void { $router->get('/protected', function ($request, $response) { return ['message' => 'This is a protected route']; })->middleware('auth', ['guard' => 'web']); };
可选:Doctrine ORM 集成
如果您希望使用 Doctrine ORM 进行数据库交互,请安装必要的 Doctrine 包
composer require doctrine/orm doctrine/dbal doctrine/migrations symfony/cache
然后,将 Sonata\Doctrine\DoctrineProvider
添加到 Orkestra 提供者列表。
默认配置
默认情况下,Doctrine 配置为使用 SQLite。您可以通过在 Orkestra 中设置 doctrine.connection
配置来将其配置为使用 Doctrine 支持的其他数据库,具体格式请参考 Doctrine 配置格式。
[ 'doctrine.connection' => [ 'dbname' => 'mydb', 'user' => 'user', 'password' => 'secret', 'host' => 'localhost', 'driver' => 'pdo_mysql', ], ];
实体和迁移
您可以使用 doctrine.entities
和 doctrine.migrations
配置指定实体和迁移类的目录
[ 'doctrine.entities' => [ 'App\Entities' => '/path/to/entities' ], 'doctrine.migrations' => [ '/path/to/migrations' ], ];
默认情况下,Sonata 将使用 App\Entities
命名空间中的实体和 App\Migrations
命名空间中的迁移,在 ./migrations
目录中。