重定向链接时将变量设置为twig?

时间:2015-11-14 20:37:33

标签: php symfony

我想在重定向链接时将变量设置为twig,就像使用渲染方法时一样:

return $this->render('socialBundle::index.html.twig',array(
                    'id' => $id
                ));

它会将Id变量设置为twig:{{id}}

return $this->redirect($this->generateUrl("tuto_animaux_voir", array(
                    'id' => $id
                )));

它会将Id变量设置为链接:xxxxx.com/Id,我希望它在重定向时将此变量渲染为twig ...

抱歉这个糟糕的概念和语言,因为我不是英格兰,这是我在stackoverflow中的第一个问题,

等待回应,谢谢

3 个答案:

答案 0 :(得分:1)

如果您想在树枝模板中放置链接或根据条件从控制器重定向,我不太明白您想要做什么。如果你能详细说明你想做什么,我想我可以帮助你。

更新(解决方案)

您可以使用"转发到另一个控制器"而不是使用"重定向"并从那里将变量发送到树枝模板

答案 1 :(得分:0)

在你的情况下,'tuto_animaux_voir'是与控制器动作相关的路线。给定id将作为action参数提供,因此您可以像这样传递:

public function fooAction($id)
{
    return $this->render(
        'socialBundle::foo.html.twig',
        ['id' => $id]
    )
}

您还可以从数据库中获取数据并将其传递给视图。

如果那不是您想要实现的目标,请告诉我们您为什么要使用重定向,以及这两项操作应该做什么。

修改 如果我正确理解了您的评论,您希望实现already available in symfony

的Flash消息

文档中的示例简单且不言自明。

答案 2 :(得分:0)

根据您的上一次评论,我得出以下结论。

假设您有路由tuto_animaux_voir的索引操作。并且路由具有一个参数id。它需要id作为参数并从数据库中提取警报(我们在数据库上有警报)。我们还有实体Alert,字段ID(默认),标题。

...

public function indexAction($id){
  $alert = $this->getDoctrine()->getEntityManager("AppBundle:Alert")->find($id);

  return $this->render("AppBundle:Post:index.html.twig", array(
     'alert' => $alert
  ));
}

在模板index.html.twig中,您可以显示提醒。

...
 {{ alert.title }}
...

如果要重定向到树枝中的索引操作。

<a href="{{ path("tuto_animaux_voir", { 'id': alert_id })}}">Alert Title<a>

此外,如果您想将此动作渲染为部分动作。

{{ render(controller('AppBundle:Alert:index',{'id': alert_id})) }}

我认为我的答案会对你有所帮助。