Goedemiddag,
ik ben momenteel bezig om een menustructuur uit de database om te zetten naar een navigation.xml voor zend_acl. Ik wil de array niet rechtstreeks in zend_navigation plaatsen.
De array zoals ik die uit de database haal is als volgt:
Vervolg loop ik door deze array heen om de juiste xml te maken..
Nu krijg ik echter niet het gewenste resultaat:
Wat ik als resultaat beoog is dat het <nav>-element aan het einde sluit ( <nav> ..items.. </nav> ).
Daarnaast worden de subelementen niet goed opgenomen in de xml.
<pages> dient binnen het hoofdelement opgenomen te worden.
Bijvoorbeeld. <navitem_3> moet pas worden gesloten NA de <pages>-elementen.
Dus: <navitem_3> <pages></pages></navitem_3>
Helaas kom ik er niet helemaal uit waar de fout zit.
Iemand een tip?
ik ben momenteel bezig om een menustructuur uit de database om te zetten naar een navigation.xml voor zend_acl. Ik wil de array niet rechtstreeks in zend_navigation plaatsen.
De array zoals ik die uit de database haal is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
| Array ( [0] => Array ( [navitem_0] => Array ( [controller] => page [action] => view [label] => ITEM_1 [module] => admin [resource] => adminnav [order] => 1 [params] => Array ( [id] => 1 ) ) ) [1] => Array ( [navitem_1] => Array ( [controller] => page [action] => view [label] => ITEM_2 [module] => admin [resource] => adminnav [order] => 2 [params] => Array ( [id] => 2 ) ) [pages] => Array ( [0] => Array ( [navitem_2] => Array ( [controller] => page [action] => view [label] => SUBITEM_2_1 [module] => admin [resource] => adminnav [order] => 1 [params] => Array ( [id] => 3 ) ) ) ) ) [2] => Array ( [navitem_3] => Array ( [controller] => page [action] => view [label] => ITEM_3 [module] => admin [resource] => adminnav [order] => 3 [params] => Array ( [id] => 4 ) ) [pages] => Array ( [0] => Array ( [navitem_4] => Array ( [controller] => page [action] => view [label] => SUBITEM_3_1 [module] => admin [resource] => adminnav [order] => 1 [params] => Array ( [id] => 5 ) ) ) [1] => Array ( [navitem_5] => Array ( [controller] => page [action] => view [label] => SUBITEM_3_2 [module] => admin [resource] => adminnav [order] => 2 [params] => Array ( [id] => 6 ) ) ) [2] => Array ( [navitem_6] => Array ( [controller] => page [action] => view [label] => SUBITEM_3_3 [module] => admin [resource] => adminnav [order] => 3 [params] => Array ( [id] => 7 ) ) ) ) ) ) |
Vervolg loop ik door deze array heen om de juiste xml te maken..
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| // creating object of SimpleXMLElement $navigation_xml = new SimpleXMLElement ( "<?xml version=\"1.0\"?><configdata></configdata>" ); $navigation_xml->addChild ( 'nav' ); // function call to convert array to xml $this->array_to_xml ( $navtree, $navigation_xml ); //saving generated xml file print $navigation_xml->asXML (); public function array_to_xml($array, &$xml) { foreach ( $array as $key => $value ) { if (is_array ( $value )) { if (! is_numeric ( $key )) { $subnode = $xml->addChild ( "$key" ); $this->array_to_xml ( $value, $subnode ); } else { $this->array_to_xml ( $value, $xml ); } } else { $xml->addChild ( "$key", "$value" ); } } } |
Nu krijg ik echter niet het gewenste resultaat:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
| <?xml version="1.0" encoding="UTF-8"?> <configdata> <nav /> <navitem_0> <controller>page</controller> <action>view</action> <label>ITEM_1</label> <module>admin</module> <resource>adminnav</resource> <order>1</order> <params> <id>1</id> </params> </navitem_0> <navitem_1> <controller>page</controller> <action>view</action> <label>ITEM_2</label> <module>admin</module> <resource>adminnav</resource> <order>2</order> <params> <id>2</id> </params> </navitem_1> <pages> <navitem_2> <controller>page</controller> <action>view</action> <label>SUBITEM_2_1</label> <module>admin</module> <resource>adminnav</resource> <order>1</order> <params> <id>3</id> </params> </navitem_2> </pages> <navitem_3> <controller>page</controller> <action>view</action> <label>ITEM_3</label> <module>admin</module> <resource>adminnav</resource> <order>3</order> <params> <id>4</id> </params> </navitem_3> <pages> <navitem_4> <controller>page</controller> <action>view</action> <label>SUBITEM_3_1</label> <module>admin</module> <resource>adminnav</resource> <order>1</order> <params> <id>5</id> </params> </navitem_4> <navitem_5> <controller>page</controller> <action>view</action> <label>SUBITEM_3_2</label> <module>admin</module> <resource>adminnav</resource> <order>2</order> <params> <id>6</id> </params> </navitem_5> <navitem_6> <controller>page</controller> <action>view</action> <label>SUBITEM_3_3</label> <module>admin</module> <resource>adminnav</resource> <order>3</order> <params> <id>7</id> </params> </navitem_6> </pages> </configdata> |
Wat ik als resultaat beoog is dat het <nav>-element aan het einde sluit ( <nav> ..items.. </nav> ).
Daarnaast worden de subelementen niet goed opgenomen in de xml.
<pages> dient binnen het hoofdelement opgenomen te worden.
Bijvoorbeeld. <navitem_3> moet pas worden gesloten NA de <pages>-elementen.
Dus: <navitem_3> <pages></pages></navitem_3>
Helaas kom ik er niet helemaal uit waar de fout zit.
Iemand een tip?