Прежде всего, я хотел бы поблагодарить всех вас за внимание к моему вопросу. Вот мой вопрос.
Я хочу запустить три существующие консольные команды в Symfony 2 с контроллера. Поэтому я написал для этого три отдельные функции (см. ниже). Мне удалось запустить 'doctrine:mapping:import' (код ниже) без каких-либо проблем внутри контроллера. Следующее, что я хотел сделать, это создать объекты на основе импортированных файлов сопоставления. Я не мог запустить команду 'doctrine:generate:entities' без выключения и загрузки ядра (я думаю, что это плохая идея, посмотрите на код ниже). Без выключения и загрузки ядра оно не будет генерировать сущности для меня. Но после выключения и загрузки ядра оно создает для меня сущности (теперь я немного счастлив). Следующая проблема, с которой я сталкиваюсь, возникает при запуске команды 'doctrine:generate:form' (код приведен ниже). Когда я запускаю этот код сразу после создания сущностей, он говорит: «Класс «ИМЯ МОЕГО КЛАССА» не существует». Этого не может быть. Потому что я запускаю команду сборки формы после создания объектов. Даже я пытаюсь найти класс, действительно ли он существует, физически обращаясь к файлу. И это там. Так что я полностью застрял здесь, я бы сказал.
Ну, я знаю, что это длинный вопрос. Если кто-то может сказать, что заставляет генерировать сущности не создавать сущности без выключения и загрузки команды kernal и form builder, которые не работают, даже файлы сущностей есть, это было бы действительно очень ценно. Однако я заметил одну вещь: эти команды (3 функции) отлично работают, когда я запускаю их по одной. Но я хочу вызывать эти 3 функции одну за другой. Итак, в основном проблема возникла, когда я последовательно вызываю эти 3 функции.
Код для 'doctrine:mapping:import'
public function executeImportCommandAction($filter)
{
$kernel = $this->container->get('kernel');
$app = new Application($kernel);
$app->setAutoExit(false);
$input = new \Symfony\Component\Console\Input\ArrayInput(
array('command' => 'doctrine:mapping:import', 'bundle' => 'TESTClientBundle', '--filter'
=> $filter, 'mapping-type' => 'yml'));
$app->doRun($input, new \Symfony\Component\Console\Output\ConsoleOutput());
}
Код для 'doctrine:generate:entities'
public function executeBuildFormCommandActions($entity)
{
$kernel = $this->container->get('kernel');
$kernel->shutdown();
$kernel->boot();
$app = new Application($kernel);
$app->setAutoExit(false);
$input = new \Symfony\Component\Console\Input\ArrayInput(
array('command' => 'doctrine:generate:entities', 'name' => 'TESTClientBundle',
'--no-backup' => 'true'));
$app->doRun($input, new \Symfony\Component\Console\Output\ConsoleOutput());
}
Код для «доктрины: генерировать: форма»
public function executeBuildFormCommandActions($entity)
{
#$kernel = $this->container->get('kernel');
$app = new Application($kernel);
$app->setAutoExit(false);
$input = new \Symfony\Component\Console\Input\ArrayInput(
array('command' => 'doctrine:generate:form', 'entity' => 'TESTVClientBundle:'.$entity.''));
$app->doRun($input, new \Symfony\Component\Console\Output\ConsoleOutput());
}
Заранее большое спасибо. Ваше здоровье!