Mechanizm przekazywania tablicy asocjacyjnej do szablonu Smarty wykonano za pomocą pętli foreach (Listing 1), dzięki czemu jeśli dodamy nową wartość do tablicy $language (Listing 2), w pliku index.php nie będziemy musieli ręcznie dodawać nowych zmiennych szablonowych. Jednak jeśli w pliku index.php pozbędziemy się pętli foreach będziemy musieli dodać linie kodu przedstawione na listingu 4. Szablon Smarty template.tpl odpowiedzialny za część prezentacyjną strony przedstawiono na listingu 3.
Układ plików w projekcie przedstawiono na rysunku 1., można również pobrać plik wczytywanie-tablicy-smarty.zip z kodem źródłowym artykułu. Projekt stworzony w środowisku programistycznym Eclipse PDT.
Rys. 1. Układ plików, katalogów w artykule
Krótki opis plików, katalogów stworzonych na potrzeby artykułu:
- Smarty-3.1.29 – Biblioteka Smarty, www.smarty.net
- templates_c – katalog zawiera skrypty PHP, utworzone w wyniku kompilacji szablonów Smarty
- index.php – główny plik przykładu uruchamiany w przeglądarce (Listing 1)
- pl.php – zawiera tablicę asocjacyjną (Listing 2)
- template.tpl – szablon Smarty (Listing 3)
Listing 1. Zawartość pliku index.php
<?php
// Dodajemy bibliotekę Smarty
require_once 'smarty-3.1.29/libs/Smarty.class.php';
$objSmarty = new Smarty();
// Ścieszka do folderu, w którym przechowywane są pliki skompilowane
$objSmarty->compile_dir = 'templates_c';
// Instalacja pliku z językiem polskim, wszystko w jednym pliku pl.php
include_once 'pl.php';
// Dynamiczne wczytanie całej tablicy z pliku pl.php
foreach ($language as $key => $lang) {
$objSmarty->assign($key, $lang);
}
// Załadowanie pliku template.tpl (tpl - rozszerzenie szablonów Smarty)
$objSmarty->display('template.tpl');
Listing 2. Zawartość pliku pl.php
<?php
$language = array(
'author' => 'Piotr Klimek',
'email' => Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.',
'head_title' => 'Witamy na stronie testowej!',
'head_noscript' => '<h1>Wymagany JavaScript!</h1><p>Strona działa nieprawidłowo z powodu braku obsługi JavaScript</p>',
'h1' => 'Witamy na stronie WiedzaNaPlus.pl',
'footer' => 'Nie jest obsługiwany Internet Explorer 6, 7, 8. Wszelkie prawa zastrzeżone (ang. All rights reserved).'
);
Listing 3. Zawartość pliku template.tpl
<!DOCTYPE html>
<html lang="pl">
<head>
<meta name="author" content="{$author}" />
<title>{$head_title}</title>
<noscript>
{$head_noscript}
</noscript>
</head>
<body>
{$h1}
<hr />
{$footer}
</body>
</html>
Listing 4. Ręczne przekazywanie informacji z tablicy do szablonu Smarty
// Jeżeli interesuje nas ręczne dodanie wszystkich wierszy tablicy asocjacyjnej,
// należy zamiast pętli foreach w pliku index.php dodać poniższy fragment kodu.
$objSmarty->assign('author', $language['author']);
// Wartość tablicy pominięta w pliku template.tpl
$objSmarty->assign('email', $language['email']);
$objSmarty->assign('head_title', $language['head_title']);
$objSmarty->assign('head_noscript', $language['head_noscript']);
$objSmarty->assign('h1', $language['h1']);
$objSmarty->assign('footer', $language['footer']);
Po wprowadzeniu adresu http://localhost/tablica zostanie uruchomiona strona (rys. 2.), zawierająca szablon Smarty przedstawiony na listingu 3. Jednak jeśli np. zamienimy w pliku template.tpl zmienną szablonową {$footer} na {$footer1}, która nie istnieje w tablicy $language (Listing 2), to zostanie wygenerowany błąd (rys. 3.).
Rys. 2. Prawidłowe uruchomienie przykładowej strony internetowej
Rys. 3. Błąd - niezdefiniowany indeks footer1
Materiały do artykułu można znaleźć w pliku wczytywanie-tablicy-smarty.zip – kodowanie plików tekstowych UTF-8, znaki końca linii (Unix).
Warto przeczytać:
- Laura Lemay, Rafe Colburn, Jennifer Kyrnin: HTML, CSS i JavaScript dla każdego. Wydanie VII, Wydawnictwo Helion, 2016.
- Robin Nixon: PHP, MySQL i JavaScript. Wprowadzenie. Wydanie IV, Wydawnictwo Helion, 2015.
- Matt Zandstra: PHP. Obiekty, wzorce, narzędzia. Wydanie IV, Wydawnictwo Helion, 2014.
- Jon Duckett: HTML i CSS. Zaprojektuj i zbuduj witrynę WWW, Wydawnictwo Helion, 2014.
- Marcin Lis: Tworzenie bezpiecznych aplikacji internetowych (z przykładami w PHP), Wydawnictwo Helion, 2014.
- Luke Welling, Laura Thomson: PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie czwarte, Wydawnictwo Helion, 2009.
Strony internetowe: