Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [smarty] Łączenie zmiennych ze sobą
mokry
post
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ł
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kasior
post
Post #2





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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 00:48