提问者:小点点

Sylius:使用自定义细枝模板中的产品存储库


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

在呈现模板期间引发异常(“未定义的方法“returnVariants”。方法名称必须以findBy或findOneBy开头!”)在SyliusWebBundle中:前端/主页:主。html。第16行的细枝。

自定义细枝扩展的代码:

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();
    }

非常感谢你的帮助!


共1个答案

匿名用户

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

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

还可以尝试清除缓存

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