从Symfony2中的相同操作渲染不同的视图

时间:2015-10-18 21:42:52

标签: symfony controller views

我正在使用Symfony2开发一个小型系统,我遇到的情况是我需要复制相同的editAction,但只更改它呈现的view

我使用此操作编辑页面中列出的所有已注册预算的基本信息。我有一个列出所有非活动预算的特殊页面,我想要一个不同的编辑页面来更改一些状态并添加日期。

如何根据网址使用相同的editAction呈现不同的观看次数?列出所有预算的页面为/budgets,不活动的预算为/budgets/inactive

2 个答案:

答案 0 :(得分:0)

使用类似:

/**
 * @Route("/budgets/{active}", defaults={"active" = "active"})
*/ 
public function editAction($active)
{ 
    // ... 
}

然后,当你转到/budgets时,$ active将是"活跃的"当你去/budgets/inactive $ active时,"不活动"。然后,您可以使用此变量来决定要显示的模板

更多信息: http://symfony.com/doc/current/book/routing.html#required-and-optional-placeholders

答案 1 :(得分:0)

Carlos的答案很好,谢谢,但是编辑操作也需要验证,然后在有效表单上有错误或某种操作的同一页面。所以我想说即使是简单的形式也有点复杂。当你进行“两个视图”动作时,它会变得复杂2 * 2 = 4倍。除此之外,$ active变量可以具有任何值,而不仅仅是“活动”或者您想要“非活动”。它可能是“笑话”,“愚蠢”和更多的可能性。我的建议是添加第二个动作,并将私有函数用于适合两种形式的函数,或者使用处理表单的custum类(或服务)。