我需要在自定义树枝扩展中使用 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();
}
非常感谢您的帮助!