umanit-pomm/pomm-bundle

用于 Pomm2 的 Symfony2 扩展包

安装: 1 853

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 31

类型:symfony-bundle

3.1.0 2023-01-13 14:59 UTC

README

Build Status Scrutinizer Code Quality

尽管这个扩展包已经可以使用,但它还在开发中。将添加新功能。

此扩展包提供了一个 pomm 服务,以便使用 Pomm2 的 模型管理器 与 Symfony 配合使用。

注意

如果您正在寻找 Pomm 1.x 的扩展包,请在 Packagist 上查找 pomm/pomm-bundle

安装

composer require pomm-project/pomm-bundle

注意

Pomm 扩展包支持 symfony flex,该 食谱 添加了用于分析面板的路由,以及从 DATABASE_URL 环境变量加载的 db 会话的简单配置。

设置

将扩展包添加到 app/AppKernel.php 文件中

<?php // app/AppKernel.php
// …
    public function registerBundles()
    {
        $bundles = [
        // other bundles
        new \PommProject\PommBundle\PommBundle(),
        // other bundles
        ];

配置

app/config 文件夹中,将数据库连接参数存储在 parameters.yml

parameters:
    db_host1: 127.0.0.1
    db_port1: 5432
    db_name1: my_db_name
    db_user1: user
    db_password1: pass

    db_host2: 127.0.0.1
#   etc.

敏感信息,如数据库凭据,不应提交到 Git。为了帮助您防止意外提交这些文件和文件夹,Symfony 标准分发版附带一个名为 .gitignore 的文件,其中列出了 Git 应该忽略的资源,包括此 parameters.yml 文件。您现在可以通过将它们用百分号 (%) 包围起来来在其他地方引用这些参数。

config.yml 中添加一个条目

pomm:
    configuration:
        my_db1:
            dsn: "pgsql://%db_user1%:%db_password1%@%db_host1%:%db_port1%/%db_name1%"
            pomm:default: true
        my_db2:
            dsn: "pgsql://%db_user2%:%db_password2%@%db_host2%:%db_port2%/%db_name2%"
            session_builder: "pomm.session_builder"
    logger:
        service: "@logger"

并在 routing_dev.yml

_pomm:
    resource: "@PommBundle/Resources/config/routing.yml"
    prefix:   /_pomm

命令行界面

Pomm CLI 通过 bin/console 工具提供。可以浏览数据库或生成模型文件。

$ ./bin/console pomm:generate:relation-all -d src -a 'AppBundle\Model' my_db1 student

如果您想生成架构,您需要使用模型管理器会话构建器

pomm:
    configuration:
        my_db1:
            dsn: "pgsql://%db_user1%:%db_password1%@%db_host1%:%db_port1%/%db_name1%"
            session_builder: "pomm.model_manager.session_builder"

从控制器中使用 Pomm

Pomm 服务在 DIC 中作为任何其他服务一样可用

    function myAction($name)
    {
        $students = $this->get('pomm')['my_db2']
            ->getModel('\AppBundle\Model\MyDb1\PublicSchema\StudentModel')
            ->findWhere('name = $*', [$name])
            ;

        …

现在可以调整和创建一个模型层,如 快速入门指南 中所述。

参数转换器

此扩展包提供了一个 参数转换器,用于将请求转换为灵活的实体。转换器在请求中搜索与主键名称匹配的参数。

您可以在选项中指定要使用的连接

/**
 * @ParamConverter("student", options={"session": "my_db2"})
 */
public function getAction(Student $student)

默认情况下,用于查找实体的模型是通过在实体类名称中添加 Model 推导出来的。如果您有不同的类名称,可以使用 model 选项

/**
 * @ParamConverter("student", options={"model": "StudentModel"})
 */
public function getAction(Student $student)

此功能需要 sensio/framework-extra-bundle

序列化器

您可以使用 序列化器 组件来序列化实体。

属性信息

此扩展包还提供了 属性信息 支持,以检索灵活实体属性信息。

将池器作为服务

如果您需要将额外的池器添加到会话构建器中,您只需将服务定义标记为 pomm.pooler

模型和模型层作为服务

模型和模型层对象可以注册为服务。为了正常工作,您必须正确标记您的服务并从配置中删除 class:session_builder

模型必须标记为 pomm.model,层必须标记为 pomm.model_layer

这两个标记都具有以下参数

  • pooler —— 默认的池化服务名称,如果留空则使用默认值
  • session —— 从中使用的默认会话服务名称,如果留空则使用默认值