【问题标题】:Symfony3 EasyAdmin Custom non-auto ID columnSymfony3 EasyAdmin 自定义非自动 ID 列
【发布时间】:2018-04-25 12:29:19
【问题描述】:

我已经设置了一个数据库表,其中的 ID 值将由我的应用程序而不是数据库创建。

/**
 * @ORM\Column(type="bigint", precision=14, options={"unsigned":true})
 * @ORM\Id()
 * @ORM\GeneratedValue("NONE")
 */
private $id;

这在 symfony 中运行良好,但我正在尝试使用 EasyAdmin 编辑表格,而 EasyAdmin 只是省略了 'id' 列。

我发现我可以从 EasyAdmin 文档中manipulate edit/new views configuration

现在我有以下配置(上面提到的id是为Product):

easy_admin:
    entities:
        - AppBundle\Entity\Category
        - AppBundle\Entity\Product

问题:

1- 我如何设置 YAML 配置以便id 字段也会出现?我发现这部分有效:

easy_admin:
    entities:
        Product:
            class: AppBundle\Entity\Product
            form:
                fields:
                    - 'id'

但这仅显示“id”,有没有办法告诉我除了所有其他字段之外我还想要“id”,所以我不必手动列出它们?

2- 我的原始配置在 YAML 文件中使用带有破折号 (-) 的实体列表。我是 YAML 菜鸟,当我创建 Product: 键时,我无法再使用破折号,有没有办法继续使用破折号列表,只为“产品”例外?例如下面的代码不起作用,它说它不是有效的 YAML。

easy_admin:
    entities:
        - AppBundle\Entity\Category
        Product:
            class: AppBundle\Entity\Product
            form:
                fields:
                    - 'id'

好吧,现在我解决了这样的问题并完全放弃了破折号:

easy_admin:
    entities:
        Category:
            class: AppBundle\Entity\Category
        Store:
            class: AppBundle\Entity\Store
        Product:
            class: AppBundle\Entity\Product
            edit:
                fields:
                    - { property: 'stores', label: 'Stores', type_options: { by_reference: false } }
            form:
                fields:
                    - 'id'
                    - 'name'
                    - 'category'
                    - 'stores'

【问题讨论】:

    标签: symfony doctrine yaml symfony2-easyadmin


    【解决方案1】:

    Q1:您可以使用基于实体控制器的自定义。在此处查看文档:https://symfony.com/doc/master/bundles/EasyAdminBundle/book/complex-dynamic-backends.html#customization-based-on-entity-controllers

    app/config/config.yml
    User:
        class: AppBundle\Entity\User
        controller: UserBundle\Controller\Admin\UserController
    

    然后在你的 UserController 中你可以有这样的东西。请注意,您必须在方法签名中使用确切的实体名称:createUserEntityFormBuilder in your case

    protected function createUserEntityFormBuilder($entity, $view)
    {
        $form = parent::createEntityFormBuilder($entity, $view);
    
        $form->add('Anyfield', TextType::class, [
            'label' => 'id' // feel free to add other options
        ]); // add fieldlike you would do in FormType
        $form->remove('anyField');
    
        return $form;
    }
    

    Q2:我不能肯定地回答这个问题。我不使用“虚线”表示法。 也许看看这里的文档:https://symfony.com/doc/current/components/yaml/yaml_format.html#collections

    【讨论】:

    • 我认为破折号表示法更好,因为我只需要放置实体的路径。但是现在我只通过更改 config.yml 解决了这个问题
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 2018-11-03
    • 2019-08-03
    • 2019-06-27
    • 2018-03-29
    • 2019-02-18
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多