我需要使用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();
}
非常感谢你的帮助!
确保您的实体正在使用自定义存储库
/**
* @ORM\Entity(repositoryClass="Sylius\...\ProductRepository")
**/
class Product { ... }
还可以尝试清除缓存
我建议不要做一个自定义的树枝函数。在控制器中调用此函数并将结果传递给twig