0

我需要在自定义树枝扩展中使用 productRepository 方法。我可以使用像“findOneBy”这样的标准方法,但是如果我在 productRepository 中定义了一个自定义方法(比如 returnVariants() ),那么我会收到这个错误:

在第 16 行的 SyliusWebBundle:Frontend/Homepage:main.html.twig 中呈现模板(“未定义的方法 'returnVariants'。方法名称必须以 findBy 或 findOneBy 开头!”)时引发异常。

自定义树枝扩展的代码:

namespace Sylius\Bundle\WebBundle\Twig;

use Symfony\Bridge\Doctrine\RegistryInterface;

class ProductExtension extends \Twig_Extension
{
    public function __construct(RegistryInterface $doctrine)
    {
         $this->doctrine = $doctrine;
    }

    public function getFunctions()
    {
         return array(
             'product_func' => new \Twig_Function_Method($this, 'productFunc'),
          );
    }

    public function productFunc($id)
    {
         /* This works */
         $product = $this->doctrine->getRepository('SyliusCoreBundle:Product')
->findOneBy(array('id' => $id));
         /* This doesn't */
         $product = $this->doctrine->getRepository('SyliusCoreBundle:Product')->returnVariants();

         return $product->getPrice();
    }

非常感谢您的帮助!

4

1 回答 1

0

确保您的实体正在使用自定义存储库

/** 
* @ORM\Entity(repositoryClass="Sylius\...\ProductRepository") 
**/
class Product { ... }

也尝试清除缓存

我建议不要制作自定义树枝功能。在控制器中调用此函数并将结果传递给 twig

于 2013-07-03T15:33:21.753 回答