У меня есть поле выбора (или выбора), которое должно получить все параметры от функции, которая возвращает массив.Как я могу получить доступ к пулу конфигурации в Symfony Sonata в классе Admin?
Это строка, определяющая поле выбора;
->add('possibilities', 'choice', array('choices' => Crud::enumStatus()))
И это функция enumStatus;
public static function enumStatus()
{
return array(
'1' => 'Awaiting Approval',
'2' => 'Partly Approved',
'3' => 'Approved',
'4' => 'Disapproved',
'5' => 'Complete'
);
}
То, что я объяснил выше, работает отлично. Но то, что я действительно хочу, не работает. Принципы остаются неизменными.
Это то, что я хочу;
->add('possibilities', 'choice', array('choices' => Crud::getUsers(array('Marketing', 'Human Resource Management'))))
И функция в том же классе, что и упомянутая выше;
public function getUsers($roles)
{
$queryBuilder = $this->getConfigurationPool()->getContainer()->get('doctrine')->getManager('admin')
->createQueryBuilder();
$queryBuilder->select('u.id, u.name')
->from('Qi\Bss\BaseBundle\Entity\Admin\User', 'u')
->innerJoin('u.businessRoles', 'r')
->where('r.name IN (:roles)')
->setParameter('roles', $roles)
->orderby('u.name');
$result = $queryBuilder->getQuery()->getResult();
$users = array();
foreach ($result as $key => $value) {
$users[$value['id']] = $value['name'];
}
return $users;
}
Ошибка при попытке что я хочу;
Пытались вызвать метод "getConfigurationPool" на классе "Xx \ Yyy \ QqqBundle \ Controller \ OrderController".
Контроллер, упомянутый в сообщении об ошибке, является контроллером, где -> add() для моей формы, а не там, где эти две функции.
Почему первый работает, а второй нет? Может кто-нибудь, пожалуйста, объясните мне это? Это как-то связано с static
в одной функции? И как я могу решить эту проблему? Что такое configurationPool и как его получить?
Я использую Соната Admin Bundle и Symfony.
Извините, в конце я задаю слишком много вопросов. Давайте позаботимся о том, как исправить выбор и получить правильную информацию из метода getUsers и ошибки getConfigurationPool. –
Не должен быть ваш вопрос под названием «Как получить доступ к пулу конфигурации?» – pbenard
Хорошо, да, это звучит лучше. Изменит его. –