2012-09-20 4 views
3

저는 아직도 Symfony2에 대해 매우 익숙합니다. 제발 쉽게 가십시오. 나는 비행기와 공항과 같은 몇 가지 관련 분야가있는 비행 표 (비행 티켓 예약 시스템의 경우)를 반복하려고합니다. 나는 내 사용자 지정 저장소에 다음과 같은 방법을 사용하고 있습니다 :Twig 템플릿에서 관련 개체의 데이터를 어떻게 출력합니까?

public function getAllFlights($limit = 100) 
{ 
    $dql = 'SELECT f FROM Flightcase\BookingBundle\Entity\Flight f'; 

    $query = $this->getEntityManager()->createQuery($dql); 
    $query->setMaxResults($limit); 

    return $query->getResult(); 
} 

과 getAllFlights하는()과 같이 내 나뭇 가지 템플릿에 전달되는 :

$flights = $em->getRepository('FlightcaseBookingBundle:Flight')->getAllFlights(); 

return $this->render('FlightcaseBookingBundle:Flight:list.html.twig', array('flights' => $flights)); 

그리고 나뭇 가지 템플릿은 단순히 통해 반복된다

{% for flight in flights %} 
<tr> 
<td>{{ flight.airline }}</td> 
<td>{{ flight.origin }}</td> 
<td>{{ flight.destination }}</td> 
<td>{{ flight.dateFrom }}</td> 
<td>{{ flight.timeFrom }}</td> 
<td>{{ flight.dateTo }}</td> 
<td>{{ flight.timeTo }}</td> 
</tr> 
{% endfor %} 

하지만 나에게 말하는 추한, 비밀 예외가 "클래스 프록시 \의 객체 FlightcaseBookingBundleEntity이 같은 $ 항공편을 수집 내부 항목 AirProxy를 문자열 ""으로 변환 할 수 없으므로 문자열로 출력 할 IATA 코드와 같은 Airline 객체 내부의 특정 속성을 가져와야합니다. 하지만 어떻게 Twig 템플릿 내에서 $ airline-> getIataCode()에 액세스 할 수 있습니까? 아니면 내 저장소에서 관련 객체를 문자열로 변환하는 방법이 있습니까?

답변

5

나는 항공기가 Doctrine의 Flight 엔티티와 연결되어있는 별도의 엔티티라고 가정합니다. 다음과 같음 :

class Airline 
{ 
    private $id; 
    private $name; 
    private $flights; 
    ... 
} 

맞습니까? 그렇다면 특정 오류가 나타나는 이유입니다. 당신은 나뭇 가지에 물건을주고, 그것을 인쇄하라고 말하고 있습니다. 그러나 그 말이 정확히 무엇을 의미합니까?

클래스가 위와 같이 보이며 항공사의 이름을 인쇄하려고한다고 가정 해 봅시다.

먼저 개체를 줄 수있는 toString() 메소드 : 또는

class Airline 
    { 
     public function toString() 
     { 
      return $this->getName(); 
     } 
    } 

, 당신이 일을 나뭇 가지 뭔가 스칼라를 제공 할 수 있습니다 :

당신은 두 가지 중 하나를 할 수 {{ flight.airline }} 교체 {{ flight.airline.name }}.

편집 :

은 그냥 항공 객체가 $ IataCode라는 속성이 있음을 보았다. 이 경우 {{ flight.airline.IataCode }}을 사용하여 Twig에서 렌더링합니다.

+0

사실은 나뭇 가지가 변수를 줄 때 인쇄해야하는 것을 찾기 위해 시도하는 일련의 검사가 있습니다. 다음 문서의 '구현'섹션을 확인하십시오. http://twig.sensiolabs.org/doc/templates.html#variables –

+0

감사합니다. 실제로 {{flight.airline.IataCode}}를 사용하여 항공기 객체의 속성에 액세스 할 수있었습니다. 너무 단순 해 보이지만 ORM 방식으로 아직 전환하지 않았습니다. – indorock

관련 문제