[英]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.