[Smarty/MySQL] Mysql assign vervangen door smarty
Ik heb het volgende probleem,
Ik heb een menu die haal ik uit de database en die parse ik via smarty.
In de database staan ook {value} waardes die smarty moet gaan vervangen.
Dit is omdat dat waardes zijn die het taal-bestand moet overschrijven, in de normale templates (de tpl-bestanden) heb ik er geen problemen mee maar als die een {waarde} uit de database heeft zet die, die ook zo neer en vervangt die het niet voor wat ik in het taalbestand heb en als assign door geef.
Hoe kan ik dit oplossen zodat die wel de waardes door geeft?
Hier onder wat code van hoe m'n menu in elkaar zit:
TPL bestand
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<ul>
{foreach name=header item=header key=cur_header from=$menu}
<li class="header">{$cur_header}</li>
{foreach name=item item=link key=cur_item from=$header}
{if $cur_item neq '0'}
<li><a href="{$link}"><span>{$cur_item}</span></a></li>
{/if}
{/foreach}
{/foreach}
</ul>
{foreach name=header item=header key=cur_header from=$menu}
<li class="header">{$cur_header}</li>
{foreach name=item item=link key=cur_item from=$header}
{if $cur_item neq '0'}
<li><a href="{$link}"><span>{$cur_item}</span></a></li>
{/if}
{/foreach}
{/foreach}
</ul>
PHP Bestand
Code (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
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
<?php
/* Hier boven wordt het een en ander geinclude*/
function drawMenu($parent=0,$indent=0) {
global $sql, $smarty;
$res = $sql->query("SELECT o.id, o.parent, o.link, o.titel, count(i.titel) children FROM menu o LEFT JOIN menu i ON o.id = i.parent WHERE o.parent=".$parent." GROUP BY o.titel ORDER BY o.volgnr");
$i = 0;
$array = array();
while ($row = $sql->fetch_array($res,MYSQL_ASSOC)) {
$array[$row['titel']] = '';
if ($row['children'] >0) {
$ress = $sql->query("SELECT o.id, o.parent, o.link, o.titel, count(i.titel) children FROM menu o LEFT JOIN menu i ON o.id = i.parent WHERE o.parent=".$row['id']." GROUP BY o.titel ORDER BY o.volgnr");
$id = $row['titel'];
while ($roww = $sql->fetch_array($ress,MYSQL_ASSOC)) {
$array[$id][$roww['titel']] = $roww['link'];
}
}
}
$smarty->assign('menu', $array);
}
$smarty->assign(array(
'INCL_TEMPLATE' => 'acp_main.tpl',
'PAGE' => 'Overzicht beheerderspaneel',
'LANG_CONFIRM_CODE' => $lang['CONFIRM_CODE'],
));
drawMenu(isset($_GET['tab']) ? $_GET['tab'] : 1);
/* Hier onder wordt het een en ander geinclude waaronder het output bestand waar $smarty->display() in staat*/
?>
/* Hier boven wordt het een en ander geinclude*/
function drawMenu($parent=0,$indent=0) {
global $sql, $smarty;
$res = $sql->query("SELECT o.id, o.parent, o.link, o.titel, count(i.titel) children FROM menu o LEFT JOIN menu i ON o.id = i.parent WHERE o.parent=".$parent." GROUP BY o.titel ORDER BY o.volgnr");
$i = 0;
$array = array();
while ($row = $sql->fetch_array($res,MYSQL_ASSOC)) {
$array[$row['titel']] = '';
if ($row['children'] >0) {
$ress = $sql->query("SELECT o.id, o.parent, o.link, o.titel, count(i.titel) children FROM menu o LEFT JOIN menu i ON o.id = i.parent WHERE o.parent=".$row['id']." GROUP BY o.titel ORDER BY o.volgnr");
$id = $row['titel'];
while ($roww = $sql->fetch_array($ress,MYSQL_ASSOC)) {
$array[$id][$roww['titel']] = $roww['link'];
}
}
}
$smarty->assign('menu', $array);
}
$smarty->assign(array(
'INCL_TEMPLATE' => 'acp_main.tpl',
'PAGE' => 'Overzicht beheerderspaneel',
'LANG_CONFIRM_CODE' => $lang['CONFIRM_CODE'],
));
drawMenu(isset($_GET['tab']) ? $_GET['tab'] : 1);
/* Hier onder wordt het een en ander geinclude waaronder het output bestand waar $smarty->display() in staat*/
?>
Gewijzigd op 01/01/1970 01:00:00 door Disksoft
Kan je iets meer uitleggen over je taalbestand, dat kan ik niet terug vinden in je code, en daardoor begrijp ik niet goed wat je bedoeld. Bedoel je dat je bepaalde waarden uit de database en template wil vertalen aan de hand van een woordenlijst?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array
(
[Meteen aan de slag] => Array
(
[Gebruikers beheren] => #link4
[Groepen beheren] => #link5
[Moderatorslog] => #link6
)
[Meteen aan de slag2] => Array
(
[{$LANG_CONFIRM_CODE}] => #link7
[Registratie opties] => #link8
)
[Server configuratie] =>
)
(
[Meteen aan de slag] => Array
(
[Gebruikers beheren] => #link4
[Groepen beheren] => #link5
[Moderatorslog] => #link6
)
[Meteen aan de slag2] => Array
(
[{$LANG_CONFIRM_CODE}] => #link7
[Registratie opties] => #link8
)
[Server configuratie] =>
)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$lang = array_merge($lang, array(
/* Hier boven en onder staan nog meer replaces */
'CONFIRM_CODE' => 'Bevestigingscode',
));
/************************************/
Het Smarty gedeelte in de php-file
/************************************/
$smarty->assign(array(
'INCL_TEMPLATE' => 'acp_main.tpl',
'PAGE' => 'Overzicht beheerderspaneel',
'LANG_CONFIRM_CODE' => $lang['CONFIRM_CODE'],
));
?>
$lang = array_merge($lang, array(
/* Hier boven en onder staan nog meer replaces */
'CONFIRM_CODE' => 'Bevestigingscode',
));
/************************************/
Het Smarty gedeelte in de php-file
/************************************/
$smarty->assign(array(
'INCL_TEMPLATE' => 'acp_main.tpl',
'PAGE' => 'Overzicht beheerderspaneel',
'LANG_CONFIRM_CODE' => $lang['CONFIRM_CODE'],
));
?>
De andere teksten zo als Gebruikers beheren, Groepen beheren, Meteen aan de slag.
Die worden straks ook vervangen voor language bestand waardes omdat dit ff nog in de test fase is en het straks in minimaal 2 talen beschikbaar moet zijn.
Dit werkt normaal perfect alleen omdat je nu een template in een template hebt volgens mij werkt het niet maar hoe kan ik het oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Disksoft
Dan gooit die de waarde nog een keertje door smarty heen.
Het heeft even een paar uur geduurt maar de aanhouder wint :)