У меня есть несколько EntityManager для моего приложения Symfony2. Я установил значение по умолчанию, а затем добавил несколько других. Эта конфигурация работает и работает в моем коде, за исключением форм.Как указать EntityManager, используемый Symfony2 Form-> handleRequest?
При попытке обработать запрос handleRequest(mixed $request = null)
представляет ошибку, так как тип Entity, который я пытаюсь проверить, форма не существует в менеджере по умолчанию, а внутри другого.
Есть ли способ указать, какой Entity Manager используется для обработки запроса?
$form = $this->createForm(
new UserType(), $user
);
$form->handleRequest($request); // $request is coming from form submission
Я получаю ошибку ясно:
An exception occurred while executing [select statement appears here]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'DEFAULTENTITY.User' doesn't exist
Это правда, что таблица пользователя не существует на субъекте по умолчанию, поэтому эта ошибка не является неожиданной. Я хочу иметь возможность указать, что функция handleRequest проверяет объект EntityManager dev
, где существует таблица User. Функция в целом приведена ниже. Эта функция отлично работает при использовании только по умолчанию EntityManager в, но ломается, когда я реализовал многостраничного менеджера среду:
public function addAction(Request $request)
{
$user = new User();
$form = $this->createForm(new UserType(), $user);
$form->handleRequest($request);
// Respond to a form submission
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager($this->currentManagerID);
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('user_add'));
}
// Render the form
return $this->render(
'MyBundle:User:create.html.twig',
array('form' => $form->createView())
);
}
Моей множественные объектной конфигурации Доктрины работу во всех других аспектах применения. Я могу использовать менеджер по умолчанию, чтобы загрузить приложения глобальных параметров и использовать субдомен выбрать EntityManager, для которого нужно проверить против входа в систему, Подборки, настройки отдельных учреждений и т.д.
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
mappings:
MyBundle: ~
dev:
connection: dev
mappings:
MyBundle: ~
Вы сделали '$ php app/console doctrine: schema: update --force'? – D4V1D
У меня есть; чтобы быть ясным (который был моим первым сообщением здесь, возможно, я не был), использование нескольких EntityProviders работает по различным аспектам приложения - логин, выбор (для таблиц и т. д.), захват данных и т. д. Проблема, с которой я столкнулся, - это когда я использую Form Builder: встроенная функция handleRequest проверяет EntityManager по умолчанию Doctrine. Было бы замечательно, если бы была опция 'handleRequest ($ request, $ em)'.Поскольку нет, я надеялся найти способ указать, какой менеджер я бы хотел использовать. –
Правильно, извините, я больше не могу вам помочь, я никогда не использовал более одного EntityManager в своих приложениях 'SF'. – D4V1D