如何在 sonata:admin:generate 之后更改 ID 字段行为

How to change ID field behavior after sonata:admin:generate

我有一个新的管理控制器,它扩展了 Sonata 的 CRUDController class。我使用 sonata:admin:generate 命令生成了它。

还有一个新的 PostAdmin.php 文件定义了几个字段行为。

下面是实体使用的table:

mysql> DESC post;
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| title  | varchar(255) | NO   |     | NULL    |                |
| author | varchar(255) | NO   |     | NULL    |                |
| slug   | varchar(255) | NO   |     | NULL    |                |
| body   | longtext     | NO   |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

我的问题是:如何在我的 CMS 中自动填充 ID 字段?

现在,它显示为用户必须填写的普通 int 字段,这会带来很多跳过数字的可能性(更不用说让用户恼火了)。我想改变这一点。

这可以通过您的 PostAdmin configuring the Form Mapper class:

来实现
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('title', 'text')
        ->add('body', 'textarea')
    ;
}

您需要删除 ->add('id') 行,使其不属于表单的一部分。因为它不是创建所必需的,也不应该被编辑。