JavaScript
x
53
53
1
$Flight = array
2
(
3
'1' => array
4
(
5
'5' => array
6
(
7
'LFID' => '6684',
8
'DepartureDate' => '2012-10-22T12:30:00',
9
'ArrivalDate' => '2012-10-22T14:00:00',
10
'BaseFareAmtInclTax' => '343.50',
11
'ReturnFlightSegmentDetails' =>
12
array
13
(
14
'87' => array
15
(
16
'LFID' => '6647',
17
'DepartureDate' => '2012-10-24T12:25:00',
18
'FareTypeName' => 'Change',
19
'FareTypeID' => '22',
20
'BaseFareAmtInclTax' => '198',
21
)
22
)
23
),
24
'10' => array
25
(
26
'LFID' => '6684',
27
'DepartureDate' => '2012-10-23T12:30:00',
28
'ArrivalDate' => '2012-10-23T14:00:00',
29
'BaseFareAmtInclTax' => '243.50',
30
'ReturnFlightSegmentDetails' =>
31
array
32
(
33
'150' => array
34
(
35
'LFID' => '6647',
36
'DepartureDate' => '2012-10-24T12:25:00',
37
'FareTypeName' => 'Change',
38
'FareTypeID' => '22',
39
'BaseFareAmtInclTax' => '198',
40
),
41
'153' => Array
42
(
43
'LFID' => '6647',
44
'DepartureDate' => '2012-10-26T12:25:00',
45
'FareTypeName' => 'Change',
46
'FareTypeID' => '22',
47
'BaseFareAmtInclTax' => '198',
48
)
49
)
50
)
51
),
52
);
53
I have this array from my controller which is passed to my twig where I execute the below code to parse it into a js array:
JavaScript
1
23
23
1
{% for flight in flights%}
2
var $FlightSegment = new Array();
3
$flight.push({
4
key:"{{ flight.key }}",
5
DepartureDate:"{{flight.DepartureDate}}",
6
ArrivalDate:"{{flight.ArrivalDate}}",
7
Amount:"{{flight.BaseFareAmtInclTax}}",
8
9
});
10
{% for ReturnFlightSegmentDetails in flight.ReturnFlightSegmentDetails %}
11
$FlightSegment.push({
12
LFID :"{{ReturnFlightSegmentDetails.LFID}}",
13
DepartureDate:"{{ReturnFlightSegmentDetails.DepartureDate}}",
14
ArrivalDate:"{{ReturnFlightSegmentDetails.BaseFareAmtInclTax}}",
15
Class:"{{ReturnFlightSegmentDetails.FareTypeName}}",
16
});
17
{% endfor %}
18
console.info($FlightSegment);
19
$flight.push({
20
ReturnFlightSegmentDetails :$FlightSegment,
21
});
22
{% endfor %}
23
The problem is that $flight.length returns 4 instead of 2, the ReturnFlightSegmentDetails is considered like an object instead to be an attribute for a flight.
Advertisement
Answer
You need to build the “flight” object differently; there’s really no need for the “$FlightSegment” variable.
JavaScript
1
20
20
1
{% for flight in flights%}
2
$flight.push({
3
key: "{{ flight.key }}",
4
DepartureDate: "{{flight.DepartureDate}}",
5
ArrivalDate: "{{flight.ArrivalDate}}",
6
Amount: "{{flight.BaseFareAmtInclTax}}",
7
ReturnFlighSegmentDetails: [
8
{% for ReturnFlightSegmentDetails in flight.ReturnFlightSegmentDetails %}
9
{
10
LFID :"{{ReturnFlightSegmentDetails.LFID}}",
11
DepartureDate:"{{ReturnFlightSegmentDetails.DepartureDate}}",
12
ArrivalDate:"{{ReturnFlightSegmentDetails.BaseFareAmtInclTax}}",
13
Class:"{{ReturnFlightSegmentDetails.FareTypeName}}"
14
}
15
{% if not loop.last } , {% endif }
16
{% endfor %}
17
]
18
});
19
{% endfor %}
20