很多人会告诉我,我应该想办法在我的桌子上更好地建立关系,但我有一个'产品'表和'product_images'表,它们很容易在查询中加入,但因为图像的路径可能完全不同,我不想在表中存储路径名,我需要一个函数来进行一些计算以找出路径是什么。我需要为每个产品运行的方法,因为我在每个产品上进行迭代以获得图像的路径。
我想做什么,也许我没有正确思考,是在Twig我想要一个方法来运行产品实体
{% for product in products %}
{{product.getImageUrl()}}
{% endfor %}
会调用我的产品实体
中的方法//AppBundle:Entity:Product
public function getImageUrl()
{
$repository = $this->getDoctrine()->getRepository('AppBundle:Product');
return $repository->getImagePath($this->id);
}
在我的存储库中:
//AppBundle:Repositiories:ProductRepository
public function getImagePath($id)
{
return 'http://domain.com/path/to/image.jpg'//simplified for my question
}
我该怎么做?当我试着这个时,我收到以下错误:
An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") in product/index.html.twig at line 19.
第19行是
<img src="{{product.getImageUrl()}}" alt="img">
如何使用实体中的方法完成?或者告诉我如何才能做到这一点。提前谢谢。
答案 0 :(得分:0)
您的问题的答案就在错误消息中。 正如它向您解释的那样,twig无法将数组转换为字符串。现在为什么我们甚至有一个阵列?
我认为,在您的public function getImagePath($id)
方法中,您最后会调用getResult()
来获取所需的图像路径。但是,getResult
始终返回结果数组,即使只有一个结果。
如果您确定只会获得一个结果,请尝试拨打getOneOrNullResult()
,这样可以解决您的问题