簡體   English   中英

Sylius:使用自定義Twig模板中的產品存儲庫

[英]Sylius: Use Product Repository from a custom Twig template

我需要在自定義樹枝擴展中使用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();
    }

非常感謝您的幫助!

確保您的實體正在使用自定義存儲庫

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

同時嘗試清除緩存

我建議不要制作自定義樹枝功能。 在控制器中調用此函數,並將結果傳遞給樹枝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM