Symfony3 EasyAdmin Пользовательский столбец неавтоматического идентификатора
Я настроил таблицу базы данных, в которой значения идентификатора будут создаваться моим приложением, а НЕ базой данных.
/**
* @ORM\Column(type="bigint", precision=14, options={"unsigned":true})
* @ORM\Id()
* @ORM\GeneratedValue("NONE")
*/
private $id;
Это прекрасно работает в Symfony, но я пытаюсь редактировать таблицу с помощью EasyAdmin, а EasyAdmin просто опускает столбец "id".
Я узнал, что я могу манипулировать конфигурацией редактирования / новых представлений из документации EasyAdmin.
Теперь у меня есть следующая конфигурация (упомянутая 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 ответ
Q1: вы можете использовать настройку на основе контроллеров сущностей. Смотрите документ здесь: https://symfony.com/doc/master/bundles/EasyAdminBundle/book/complex-dynamic-backends.html
app/config/config.yml
User:
class: AppBundle\Entity\User
controller: UserBundle\Controller\Admin\UserController
И тогда в вашем UserController вы можете иметь что-то вроде этого. Обратите внимание, что вы должны использовать точное имя сущности в сигнатуре метода: создайтеUser 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: я не могу ответить на этот вопрос наверняка. Я не использую "пунктирную" запись. Может быть, посмотрите на документ здесь: https://symfony.com/doc/current/components/yaml/yaml_format.html