【问题标题】:Rendering controller within a page在页面内渲染控制器
【发布时间】:2017-05-14 06:58:15
【问题描述】:

我正在尝试在我的模板中呈现一个控制器,以便让我拥有的控制器呈现:

public function createAction(Request $request)
{
    $review = new Review();

    $form = $this->createForm(ReviewType::class, $review,[
        'action' => $request->getUri()
    ]);

    $form->handleRequest($request);

    if($form->isValid()) {

        $manager = $this->getDoctrine()->getManager();
        $manager->persist($review);
        $manager->flush();

    }

    return $this->render('BookReviewsBundle:Review:index.html.twig',
        ['form' => $form->createView()]);
}

在 index.html.twig 模板中,控制器返回我有:

{% block body %}
  {{ form_start(form) }}
  {{ form_end(form) }}
{% endblock %}

然后是我要在其上呈现控制器的页面:

{{ render(controller("BookReviewsBundle:Review:create")) }}

但是,我收到此错误:

在渲染模板期间抛出异常(“Catchable Fatal Error: Object of class Proxies__CG__\Book\BookBundle\Entity\Book 无法转换为字符串”)

有谁知道我做错了什么?

【问题讨论】:

  • 是否可能存在拼写错误?我在错误消息中看到:\Reviewr\BookBundle\Entity\Book 注意Reviewr 的拼写。
  • @AlvinBunk 抱歉,我已经更新了问题
  • 您的意思是您的 Twig 文件中有:{{ render(controller("BookReviewsBundle:Review:create")) }}?这似乎不对。你的createAction 有路线吗?使用命令行php bin/console debug:router 显示您的路线。
  • @AlvinBunk 路由是create_review,路径是/bookreview
  • 您能否注释掉 Twig 文件中的 render(controller... 部分,然后浏览到 http://localhost/bookreview 并查看您的表单是否正确显示且没有错误。将 localhost 替换为您的主机名等...

标签: symfony twig render


【解决方案1】:

像这样更改您的代码:

$form = $this->createForm(ReviewType::class, $review);

我认为你不能传递第三个参数。你能试试这个吗 - 不知道它是否会起作用。

【讨论】:

  • 你是否也清除了缓存:php bin/console cache:clear --env=prod
  • 现在不确定如何提供帮助。您可以尝试调试网址;通过将 app_dev.php 附加到 URL。例如http://localhost/app_dev.php/bookreview您可能会看到更多有用的信息...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
相关资源
最近更新 更多