symfony - 根据路由注解切换模板

标签 symfony routes

我在 Controller 中有以下方法:

/**
 * @Route("/add", name="item_add")
 * @Route("/edit/{id}", name="item_edit")
 * @Template
 */
public function editAction(Request $request, Item $item = null)

此方法加载 edit.html.twig模板,因为操作名称。

是否可以强制使用add.html.twig模板如果 item_add路线匹配且 edit.html.twig如果item_edit匹配吗?

最佳答案

jperovic 提供的答案似乎是正确的,但是,恕我直言,使用路线名称感觉不正确。
可以轻松避免依赖路由名称。

这是一个例子

/**
 * @Route("/add", name="item_add")
 * @Method({"GET"})
 * @Template
 */
public function addAction(Request $request, Item $item = null)
{
    if (null === $item) {
        $item = new Item;
    }

    $form = $this->createForm(new ItemType, $item, [
        'action' => $this->generateUrl('item_update'), // In your view?
        'method' => 'POST'
    ]);

    return [
        'form' => $form->createView()
    ];
}

/**
 * @Route("/edit/{id}", name="item_edit")
 * @Method({"GET"})
 * @Template
 */
public function editAction(Request $request, Item $item)
{
    return $this->addAction($request, $item);
}

这样,您将有两个路由做几乎相同的事情,并发送相同的参数

/edit/{id} => edit.html.twig
/add       => add.html.twig

关于symfony - 根据路由注解切换模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807564/

相关文章:

ios7 - MKDirectionsResponse 总是返回 nil

flutter - 当我的小部件使用字符串ID进行引用时,如何将参数传递给有状态的小部件?

php - 我可以隐藏 Controller 并查看名称 cake php 2 吗?

php - 未捕获的 PHP 异常 RedisException : "Cannot assign requested address"

php - 使用 Doctrine 进行多种配置文件类型的类设计

javascript - 对 symfony api 的 ajax 请求返回不存在 'Access-Control-Allow-Origin' header

php - 在 Symfony/Doctrine 中删除大量用户数据的最佳/快速解决方案

c# - 这些 Web API 路由的顺序有什么问题

ruby-on-rails-3 - 在 route 将:id定义为不同于Rails 3中的id

php - UndefinedFunctionException - 试图从命名空间 "apc_fetch"调用函数 "Doctrine\Common\Cache"