2016-07-22 5 views
0

많은 사람들이 내 테이블에서 관계를 더 잘 수행하는 방법을 찾아야한다고 말하고 있지만 'products'테이블과 '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 
} 

내가 어떻게 할 수 있습니까? 나는 순간에 이것을 시도 할 때, 나는 다음과 같은 오류가 점점 오전 : 나는 엔티티에서 방법을 사용하여 수행 할 수있는 방법은 라인 (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)과 같은 것이 필요할 것입니다. 그런 다음 나뭇 가지 확장을 통해 나뭇 가지에 액세스하십시오. 나는 당신이 실제로 제품 엔티티 배열을 전달하고 제품 배열 배열을 전달하지 않는다고 가정합니다. 어떤 오류 메시지가 나타내는 것 같습니다. – Cerad

+1

{{product.imageUrl}}? – Alsatian

답변

0

질문에 대한 답변은 오류 메시지에 있습니다. 설명대로 나뭇 가지를 배열로 변환 할 수 없습니다. 이제 우리는 왜 배열을 가지고 있습니까?

나는 여러분의 public function getImagePath($id) 방법에서, 결국 getResult()을 호출하여 원하는 이미지 경로를 얻는다 고 가정합니다. 그러나 getResult은 하나의 결과 만있는 경우에도 항상 결과 배열을 반환합니다. 당신은 하나의 결과를 얻을 수 있는지 확인하는 경우

, 문제

관련 문제