Symfony命令不起作用,因为它呈现模板

时间:2018-02-07 21:48:41

标签: php symfony doctrine twig symfony-2.8

我使用Symfonies

生成了命令
php app/console generate:command

它生成了此命令并添加了

class AppTriggerBuildCommand extends ContainerAwareCommand
{
protected function configure()
    {
        $this
            ->setName('trigger')
            ->setDescription('...')
            ->addArgument('argument', InputArgument::OPTIONAL, 'Argument description')
            ->addOption('option', null, InputOption::VALUE_NONE, 'Option description')
        ;
    }

protected function execute(InputInterface $input, OutputInterface $output)
{
    $argument = $input->getArgument('argument');
    if($argument == 'build'){
        $content = $this->pageAction('en', 'home');
        $this->storeContentElementsAction('en', 'home', $content);
    }

    $output->writeln('You are outside build.');
}


public function pageAction($language, $page) {
    $akeneo = $this->getContainer()
        ->get("pimc.akeneo_cms.backend_connector");

    $contentElements = $akeneo->getContentElementList($page);
    $contentElements = $this->sort($contentElements);
    $content = $this->getContainer()->get('templating')->renderResponse(
        'AppBundle::page.html.twig',
        ["contentElements" => $contentElements, "language" => $language]);

    return $content;

}

private function sort($contentElements) {
    ksort($contentElements);
    return $contentElements;
}

/**
 * @param $language
 * @param $page
 */
public function storeContentElementsAction($language, $page, \Symfony\Component\HttpFoundation\Response $content) {

    $staticalContent = new StaticContent();
    $staticalContent->setData($content->getContent());
    $staticalContent->setBuild(1);
    $staticalContent->setName("/".$language."/".$page.".html");

    $doctrine = $this->getContainer()->get('doctrine');
    $em = $doctrine->getManager();
    $em->persist($staticalContent);
    $em->flush();
}

}

StaticContent是一个实体。

但是当我将这个命令调用到命令行时,我遇到了一个我无法解决的异常错误。 php app / console trigger build Symfony给了我这个错误行。 enter image description here

有人可以帮助我这个命令对我有用吗?

1 个答案:

答案 0 :(得分:1)

您正在pageAction方法中操纵HTTP Response,我认为您使用了错误的方法。

您似乎希望将返回到数据库中的html存储为html字符串。

正如Cerad在评论中指出的那样,你只需要致电$content = $this->getContainer()->get('templating')->render($template, []);

现在$content是您呈现的html字符串。

PS:从另一个'上下文'复制/粘贴时重读代码:D