Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [smarty] Łączenie zmiennych ze sobą
mokry
post 27.11.2007, 22:03:18
Post #1





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Witam,
Mam prawdopodobnie problem banalny, ale jakoś nie umiem sobie z nim poradzić a przeszukiwanie google nie daje oczekiwanych rezultatów (niestety...)

Problem przedstawia się następująco:
Tworzę serwis WWW dostępny w kilku wersjach językowych. W zmiennej $_SESSION['lang'] trzymam identyfikator języka (pl, en, ger, fr, ...)
Pobieram z bazy danych pewną treść strony, która ma pojawić się na stronie. Zapisana jest ona w kolumnie 'content_body_pl' lub 'content_body_ger', '...'
Oczywiście wszystko to zarzucam do tablicy asocjacyjnej mając postać:
  1. <?php
  2. assign('content', $content); // zmienna $content to tablica asocjacyjna poniżej
  3. ?>

Kod
Array
(
    [welcome] => Array
        (
            [content_name_pl] => Witaj na stronie
            [content_name_en] =>
            [content_name_ger] =>
            [content_name_fr] =>
            [content_body_pl] => Lorem ipsum bla, powitanie w j. polskim
            [content_body_en] =>
            [content_body_ger] =>
            [content_body_fr] =>
        )

)


i teraz na stronie w szablonie chcę wyświetlić dany element tablicy zależny od danego języka.

Próba odwołania się w stylu:
Kod
$content.welcome.content_body_$smarty.session.lang

nie skutkuje jak należy.
Łączenie zmiennych w samym szablonie ({assign ...}) też niebardzo wychodzi...

Bardzo proszę o pomoc w rozwiązaniu problemu.

Pozdrawiam,
Michał


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
nospor
post 27.11.2007, 22:17:51
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kod
{assign var="lang" value="content_body_$smarty.session.lang"}
{$content.welcome.$lang}


ps: nie ger a de


edit:
czemu ladujesz cala tablice ze wszystkimi jezykami skoro potrzebujesz tylko jednego w danej chwili?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mokry
post 27.11.2007, 22:20:10
Post #3





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


@nospor: Wywala mi następujący błąd:

Fatal error: Smarty error: [in index.tpl line 4]: syntax error: $smarty. is an unknown reference (Smarty_Compiler.class.php, line 2119) in C:\wamp\www\ew-invest\libs\Smarty.class.php on line 1095


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
nospor
post 27.11.2007, 22:26:12
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




sorki, moj blad:
Kod
{assign var="lang" value="content_body_`$smarty.session.lang`"}
{$content.welcome.$lang}


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mokry
post 27.11.2007, 22:28:19
Post #5





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


No i sobie pyka jak należy.

@nospor: Dzięki winksmiley.jpg


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
kasior
post 17.11.2010, 15:36:05
Post #6





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 20.12.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Odświeżę stary temat gdyż mam podobny problem. Mianowicie to rozwiązanie powyższe mi nie działa.

Dokładnie stosuję to w ten sposób:

Kod
{$menu.name_`$jezyki[j]`}


Otrzymuję komunikat:
Kod
Fatal error: Smarty error: [in /home/virtualki/52702/admin/modules/menu/templates/editmenu.tpl line 16]: syntax error: unrecognized tag: $menu.name_`$jezyki[j]` (Smarty_Compiler.class.php, line 446) in /home/virtualki/52702/admin/lib/smarty/Smarty.class.php on line 1091


Co można zrobić jeszcze ?


--------------------
Zapraszam do odwiedzenia mojej strony.
Go to the top of the page
+Quote Post
sebekzosw
post 17.11.2010, 15:59:15
Post #7





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


musisz zrobić nową zmienną z poziomu Smarty - sposób nospor-a na pewno działa smile.gif
Go to the top of the page
+Quote Post
kasior
post 17.11.2010, 16:17:11
Post #8





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 20.12.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No jakby to było takie proste.. Wydaje się tak jakby moje smarty nie rozumiało znaczka `

Poniżej jak mam to zrobione teraz.
Języki są w tabeli w polu zapisane w postaci:

  1. PL,DE,EN


Wyciągam je z bazy i:

  1. $jezyki = explode(',', $result['language']);
  2. $smarty->assign('jezyki',$jezyki);


Następnie wyciągam dane z tabeli menu:

  1. $sql = 'select * from menu where id_menu=:idp limit 1';
  2. $stmt=$hDB->prepare($sql);
  3. $stmt->bindParam(':idp',$idp,PDO::PARAM_INT);
  4. $stmt->execute();
  5. $menuabc = $stmt->fetch(PDO::FETCH_ASSOC);
  6. $stmt->closeCursor();
  7.  
  8. $smarty->assign('menu',$menuabc);



I odpalam wszystko w szablonie:

Kod
{section start=0 step=1 name=j loop=$jezyki}
        {assign var="lang" value="name_$jezyki[j]"}
            <input type="text" name="name_{$jezyki[j]|strtolower}" value="{$menu.`$lang|strtolower`}"><br />
{/section}


Proszę pomóżcie bo ja już nie wiem co robić. Siedzę w manualu i dłubię i nie daje to rezultatów żadnych.


EDIT: Problem rozwiązany. Prawidłowe rozwiązanie (dla potomnych):

Kod
{section start=0 step=1 name=j loop=$jezyki}
      {assign var="lang" value="name_`$jezyki[j]`"|lower}
             <input type="text" name="{$lang}" value="{$menu.$lang}"><br />
{/section}


Ten post edytował kasior 18.11.2010, 11:41:56


--------------------
Zapraszam do odwiedzenia mojej strony.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 20:55