多くの人が私のテーブルで関係を良くする方法を理解する必要があると言いますが、私は 'products'テーブルと 'product_images'テーブルを持っています。クエリへの結合は簡単ですが、画像へのパスが大きく異なる可能性があり、パス名をテーブルに格納したくないため、パスが何であるかを調べるための計算が必要です。イメージへのパスを取得するために、それぞれを繰り返していくうちに、各製品に対して実行するメソッドが必要です。TwigからEntityメソッドを呼び出すにはどうすればいいですか
私は何をしたい、と多分私が正しく考えていないよ、私はエンティティ
製品の中でメソッドを呼び出します{% 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
}
私はこれをどのように行うことができますか?私は、現時点ではこれをしようとすると、私は次のエラーを取得しています:私は、エンティティからのメソッドを使用して達成することができますどのようにライン19は
<img src="{{product.getImageUrl()}}" alt="img">
ある
An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") in product/index.html.twig at line 19.
?あるいは、私がこれをどうやってできるか教えてください。前もって感謝します。
あなたが本当にあなたの関係がよりよく行う方法を見つけ出す必要がありますを解決する必要のある、代わりに
getOneOrNullResult()
を呼び出してみてください。冗談だ。あなたの小枝は正しいです。 Product :: getImageUrl()は単純な文字列を返すだけです。あなたのプロダクトエンティティはすべて台無しです。コンテナにアクセスできないProductImagManager :: getImageUrl($ product)のようなものが必要になり、twig拡張機能を使ってtwigにアクセスしてください。私はあなたが実際に製品の配列を渡していて、製品配列の配列を渡していないと仮定しています。あなたのエラーメッセージが示すようなものです。 – Cerad{{product.imageUrl}}? – Alsatian