【发布时间】:2014-09-10 01:14:58
【问题描述】:
我需要覆盖 sylius_partial_product_latest 路由的行为,才能使用附加参数渲染模板。
简单的例子:在不同的页面上,我需要一次显示 2 到 4 个产品,轮播滚动浏览 4-8 个产品。现在在SyliusWebBundle:Frontend/Product:latest 模板中我有:
{{ grid(products) }}
但在某些情况下我需要:
{{ grid(products, 2) }}
在其他方面:
{{ grid(products, 3) }}
{# or it can be 4 or any other number #}
现在在模板中我只有products var(它由资源机制提供服务),我可以将变量传递到存储库,在那里我可以将它添加到我的products 数组中,但这不是一个好方法。它可以通过简单地将变量传递给查询来完成:
{{ render(url('sylius_partial_product_latest', {'size': 3, 'limit': 2, 'template': 'SyliusWebBundle:Frontend/Product:latest.html.twig'})) }}
我需要能够将变量size 传递给products 之外的模板SyliusWebBundle:Frontend/Product:latest。
我尝试覆盖 ProductBundle 和 ResourceBundle... 但是使用自定义操作覆盖控制器(我不想覆盖 indexAction 或 showAction)让我无处可去。 PHP 根本没有击中我的控制器。相反,它击中了ResourceBundle 的showAction。而且,是的,我覆盖了路由以指向我的控制器。
如果我用新路由覆盖 ProductController 并在我的模板中使用它会引发异常:
在渲染模板期间引发了异常 (URI 的“控制器”sylius.controller.product:partialAction“ "/partial" 不可调用。") 在 SyliusWebBundle:Frontend/Product:show.html.twig 在第 136 行。
当我将 _controller 更改为以标准 Symfony 方式指向我的控制器时,我遇到了下一个异常:
可捕获的致命错误:参数 1 传递给 Sylius\Bundle\ResourceBundle\Controller\ResourceController::__construct() 必须是 Sylius\Bundle\ResourceBundle\Controller\Configuration,没有给出, 叫进来 /Users/mihail/Sites/magazin/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php 在第 77 行并在 /Users/mihail/Sites/magazin/vendor/sylius/sylius/src/Sylius/Bundle/ResourceBundle/Controller/ResourceController.php 在第 63 行
【问题讨论】:
-
这是分页问题?也许您可以尝试使用 pagerfanta 来完成这项工作?使用控制器中的“MaxPerPage”值
-
这与分页无关。