2016-07-22 7 views
0

多くの人が私のテーブルで関係を良くする方法を理解する必要があると言いますが、私は '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. 

?あるいは、私がこれをどうやってできるか教えてください。前もって感謝します。

+1

あなたが本当にあなたの関係がよりよく行う方法を見つけ出す必要がありますを解決する必要のある、代わりにgetOneOrNullResult()を呼び出してみてください。冗談だ。あなたの小枝は正しいです。 Product :: getImageUrl()は単純な文字列を返すだけです。あなたのプロダクトエンティティはすべて台無しです。コンテナにアクセスできないProductImagManager :: getImageUrl($ product)のようなものが必要になり、twig拡張機能を使ってtwigにアクセスしてください。私はあなたが実際に製品の配列を渡していて、製品配列の配列を渡していないと仮定しています。あなたのエラーメッセージが示すようなものです。 – Cerad

+1

{{product.imageUrl}}? – Alsatian

答えて

0

あなたの質問に対する答えは、エラーメッセージの右側にあります。 説明したように、twigは配列を文字列に変換できません。今では配列があるのはなぜですか?

あなたのpublic function getImagePath($id)メソッドでは、最後にgetResult()を呼び出して、目的のイメージパスを取得すると仮定します。ただし、結果が1つしかない場合でも、getResultは常に結果の配列を返します。あなたが1つの結果だけを取得することが確実な場合

、あなたの問題

関連する問題