Symfony - Как регенерировать Crud для Entity из контроллера

command-line controller crud symfony

618 просмотра

1 ответ

7970 Репутация автора

Я хотел бы восстановить Crud для всех моих сущностей из моего контроллера, как только я введу определенный URL. В приведенном ниже примере команда запускается только для одного объекта в демонстрационных целях. Когда я перехожу к пути '/ reCrud', мой браузер будет вращаться вечно, но команда никогда не выполняется. Что весьма интересно, тот же код, когда я запускаю вместо него «cache: clear», будет работать нормально.

<?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);
    }
}

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

Автор: DevWL Источник Размещён: 18.07.2016 04:12

Ответы (1)


1 плюс

1837 Репутация автора

Решение

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

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
Автор: pavlovich Размещён: 18.07.2016 05:37
Вопросы из категории :
32x32