Как вы знаете, все существа Бога разные. Они лучше всего вписываются в нереляционную базу данных, такую как mongodb. Предположим, у меня есть ZooCollecion
с различными объектами документа Animal
.Sonata Admin: Используйте несколько классов документов (типы)
Как я могу использовать sonata-admin, до изменить класс документа с помощью простого меню выбора типа (или что-то связанного)?
Acme/DemoBundle/Resources/config/services.yml
services:
animal.admin.page:
class: %animal.admin.class%
arguments: [null, %animal.class%, null] # Is this the key ?
calls:
- [ setContainer, [ @service_container ] ]
tags:
- { name: sonata.admin, manager_type: doctrine_mongodb, group: Zoo, label: Animals }
животные - Acme/DemoBundle/Document/Animal
(базовый документ):
/**
* Class representing Animals
*
* @MongoDB\Document(collection="zoo_animals",
* repositoryClass="Acme\DemoBundle\Repository\ZooRepository")
*/
class Animal
{
/**
* @MongoDB\Id(strategy="auto")
*/
protected $id;
/**
* @MongoDB\Hash
* @Assert\NotBlank(message="Type type should not be blank.")
*/
protected $type;
...
}
слон - Acme/DemoBundle/Document/Elephant
(расширяет базовый документ):
/**
* Class representing Elephants
*/
class Elephant extends Animal
{
...
}
Черепаха - Acme/DemoBundle/Document/Turtle
(расширяет базовый документ):
/**
* Class representing Turtles
*/
class Turtle extends Animal
{
...
}
Hugo Briand, ваши ссылки мертвы ... – Ophiuchus
Обновлено Ophiuschus, спасибо :) –