2012-10-21 2 views
0

저는 symfony2의 새로운 개발자입니다. 따라서 개체 배열을 변환하는 데 어려움을 겪고 있습니다. 제 나뭇 가지에 js가있는 배열의 컨트롤에서 가져옵니다. 내가하고 있어요 나뭇 가지에서 여기누락되었습니다 : 나뭇 가지의 속성 ID

예를 들어

$Flight = array 
       (
       '1' => array 
        (
        '5' => array 
         (
         'LFID' => '6684', 
         'DepartureDate' => '2012-10-22T12:30:00', 
         'ArrivalDate' => '2012-10-22T14:00:00', 
         'BaseFareAmtInclTax' => '343.50', 
         'ReturnFlightSegmentDetails' => 

        ), 
        '10' => array 
         (
         'LFID' => '6684', 
         'DepartureDate' => '2012-10-23T12:30:00', 
         'ArrivalDate' => '2012-10-23T14:00:00', 
         'BaseFareAmtInclTax' => '243.50', 
         'ReturnFlightSegmentDetails' => 
         array 
          (
          '150' => array 
           (
           'LFID' => '6647', 
           'DepartureDate' => '2012-10-24T12:25:00', 
           'FareTypeName' => 'Change', 
           'FareTypeID' => '22', 
           'BaseFareAmtInclTax' => '198', 
          ) 

         ) 
        ) 
       ), 
      ); 

:

{% for flight in flights%} 
        var $FlightSegment = new Array(); 
        $flight.push({ 
         DepartureDate:"{{flight.DepartureDate}}", 
         ArrivalDate:"{{flight.ArrivalDate}}", 
         Amount:"{{flight.BaseFareAmtInclTax}}", 
         {% for ReturnFlightSegmentDetails in flight.ReturnFlightSegmentDetails %} 
          $FlightSegment.push({ 
           ReturnFlightSegmentDetails :"{{ReturnFlightSegmentDetails.DepartureDate}}", 
          }); 
         {% endfor %} 

        }); 


       {% endfor %} 

하지만 라인 "$ FlightSegment

문제는 내가 배열의 배열을 가지고있다 .push "는"missing : property id after "오류를 생성합니다.

+0

작성된 코드는 각 항공편에 대해 "$ FlightSegment"를 다시 선언합니다. 그런 다음 외부 '.push()'호출을 위해 작성중인 객체 리터럴 내부의'.push()'호출을 수행합니다. – Pointy

답변

1

더 쉽게 얻을 수 있습니다. 당신이 PHP에서 원하는 형식의 배열이 다음 JSON으로 그것을 밖으로 에코 :

{% autoescape false %} 
    var jsflights = {{ phpflights|json_encode() }}; 
{% endautoescape %} 

을 예에서 나는 변수 $ phpflights 가정 위에, 당신이보기에 전달했다고 원하는 형식으로 PHP 배열입니다. 위의 코드는 뷰에 있으며 php 배열과 동일한 구조로 jsflights라는 javascript 배열을 만듭니다.

이렇게하면 배열 코드를 두 번 작성할 필요가 없습니다.

+0

고맙습니다. 감사합니다. ^^ 감사합니다. ReturnFlightSegmentDetails 속성을 조작하려면 js 배열을 가지고있는 것처럼 행동합니까? 그게 다야? – fbh

+0

좋아요! echo로 처리했지만 json_encode가 반환 한 문자열의 요소를 조작하고 싶다면 어떻게 처리할까요?! 나는 물건을 분명히 보지 못한다 : '( – fbh

+0

배열과 같이 조작하면 자바 스크립트 배열이된다.) – wgcrouch

0

원본 서식 파일에는 나뭇 가지 서식 파일에서 허용되지 않는 PHP가 들어있는 것처럼 보입니다.

더 일반적으로 템플릿은 데이터를 표시하고이를 돕기 위해 최소한의 수정 작업을 수행하는 것으로 가정합니다. 당신이하고있는 일에 대해, PHP의 컨트롤러에서 PHP를 사용하는 것이 좋을 것 같습니다. 이미 표시 할 준비가 된 결과를 나뭇 가지로 전달하는 것이 좋습니다.

+0

나는 완벽하게 이해하지만, 나는 큰 프로젝트의 일부분이다. 내 보스는 클라이언트 측에서 수행되는 일부 작업을 수행 할 것이고 그래서 PHP 데이터를 가져 와서 js로 변환해야한다. 나뭇 가지 파일에서 그것을 조작 할 수 있습니다 – fbh

+0

아, 지금하고있는 것을 보았습니다. 템플릿의 코드를 자세히 보지 않았으므로 변수가 JS 앞에 있다는 것을 알지 못했습니다. 및 PHP를 가정). – Ethan