luccpl/sonata

dev-main 2024-07-21 01:29 UTC

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.entitiesdoctrine.migrations 配置指定实体和迁移类的目录

[
	'doctrine.entities' => [
		'App\Entities' => '/path/to/entities'
	],
	'doctrine.migrations' => [
		'/path/to/migrations'
	],
];

默认情况下,Sonata 将使用 App\Entities 命名空间中的实体和 App\Migrations 命名空间中的迁移,在 ./migrations 目录中。