2013-07-10 3 views
1

Представьте себе пользователя, который связан с компанией:SonataAdmin - Выбор поля из не управляемого объекта

User 
    - id 
    - username 
    - company_id 

Список компании происходит от вызова процедуры (внешняя БД), без рук на соответствующей таблице

EXEC getCompanies; 
+----+-------+ 
| id | name | 
+----+-------+ 
| 1 | comp1 | 
| 2 | comp2 | 
| 3 | comp3 | 
+----+-------+ 

Как бы вы интегрировали это, чтобы позволить SonataAdmin отображать правильный выбор ввода для компании в редактировании пользователя и отображать название компании в списке пользователей?

Вы знаете, где я могу найти несколько примеров об этом конкретном случае?


Я сделал пользовательский тип company поля, которое fetchs его значения от вызова процедуры, но я не уверен, что это самая лучшая идея, и я не в состоянии отобразить Comany имя в списке.

ответ

0

Вы можете использовать тип choice, и если есть слишком много компаний для отображения, вы можете использовать GenemuFormBundle с библиотекой Select2, чтобы иметь фильтр выбора виджета.

+0

Количество предметов не является проблемой, и я уже расширяю тип 'choice'. Проблема заключается в том, чтобы получить значения из вызова процедуры и отобразить метку в списке. Спасибо за [Select2] (http://ivaynberg.github.io/select2/) Я не знал этого, кажется очень хорошим. –

+0

Вы можете написать метод, который предварительно загружает список сущностей компании пользователю внутри 'UserManager' и вводит этот' UserManager' в ваш 'Admin'. Вы также можете зарегистрировать прослушиватель Doctrine, который загружает список автоматически после каждого события onLoad (тогда нет необходимости вводить в Admin). – TautrimasPajarskas