Я хотел бы регенерировать crud для всех моих Entities из моего контроллера после ввода определенного URL-адреса. В приведенном ниже примере выполняется команда только для одного объекта для демонстрации. Когда я перехожу к пути «/ reCrud», мой браузер будет вращаться навсегда, но команда никогда не будет выполняться. Интересно то, что тот же код, когда я запускаю «cache: clear», будет работать нормально.Symfony - Как регенерировать crud для Entity с контроллера
<?php
namespace AdminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class CrudController extends Controller
{
/**
* @Route("/reCrud")
*/
public function reCrudAction()
{
$kernel = $this->get('kernel');
$application = new Application($kernel);
$application->setAutoExit(false);
$input = new StringInput('doctrine:generate:crud AdminBundle:Klient --overwrite --no-debug');
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);
// return the output, don't use if you used NullOutput()
$content = $output->fetch();
// return new Response(""), if you used NullOutput()
return new Response($content);
}
}
Возможно, это только проблема конфигурации среды. Не стесняйтесь блокировать этот код и тестировать его на своем компьютере. Сообщите мне, работает ли это или нет.
Отлично! Спасибо. Я также должен был добавить «--entity =», прежде чем он сработает, но вы его решили. Благодарю. Вы можете отредактировать свой ансер, как показано ниже: doctrine: generate: crud --entity = AdminBundle: Klient --overwrite --no-debug --no-interactive – DevWL
@Fox конечно, спасибо – pavlovich