2016-07-18 3 views
1

Я хотел бы регенерировать 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); 
    } 
} 

Возможно, это только проблема конфигурации среды. Не стесняйтесь блокировать этот код и тестировать его на своем компьютере. Сообщите мне, работает ли это или нет.

ответ

1

Он вращается, потому что под ней ждет вас, чтобы ввести материал:

Welcome to the Doctrine2 CRUD generator 



This command helps you generate CRUD controllers and templates. 

First, give the name of the existing entity for which you want to generate a CRUD 
(use the shortcut notation like AcmeBlogBundle:Post) 

The Entity shortcut name [AdminBundle:Klient]: 


Решение:

Попробуйте добавить -n вариант, который:

-n, --no-interaction    Do not ask any interactive question 

Таким образом, в конец вашей команды будет примерно таким:

doctrine:generate:crud --entity=AdminBundle:Klient --overwrite --no-debug --no-interaction 
+0

Отлично! Спасибо. Я также должен был добавить «--entity =», прежде чем он сработает, но вы его решили. Благодарю. Вы можете отредактировать свой ансер, как показано ниже: doctrine: generate: crud --entity = AdminBundle: Klient --overwrite --no-debug --no-interactive – DevWL

+0

@Fox конечно, спасибо – pavlovich