Symfony3 EasyAdmin自定义非自动ID列

时间:2017-11-12 20:59:21

标签: symfony doctrine yaml symfony2-easyadmin

我已经设置了一个数据库表,其中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'

1 个答案:

答案 0 :(得分:0)

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中你可以有这样的东西。注意你必须在方法签名中使用确切的实体名称:在你的情况下创建用户 EntityFormBuilder

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:我无法回答这个问题。我不使用" Dashed"符号。 也许请看一下doc:https://symfony.com/doc/current/components/yaml/yaml_format.html#collections