Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Instalacja i użycie Smarty (PHP)
lahhott
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

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


Wrzuciłem na lokalny dysk robiący za serwer (WebServ) biblioteki Smarty. Idąc według krótkiego przewodnika ze strony Smarty, zmieniłem plik php.ini pod Windows. Utworzyłem odpowiednie katalogi. Smarty działa w prostym pliku index.php i index.tpl. Jest tam przykładowa zmienna {$name}, przeglądarka wyświetla "Hello Ned!", gdzie kod jest "Hello {$name}". Czyli działa.

Jednak borykam się z uruchomieniem obsługi Smarty w innych plikach. Dostałem od kogoś pliki używające zmiennych Smarty i chciałbym je uruchomić. Mam powiedzmy plik aaa.tpl i aaa.php. Uruchamiam ten aaa.tpl jako htm i wynik w przeglądarce zawiera tylko odwołania zmiennych Smarty, a nie wynik. Jak to zrobić? Czy ktoś mógłby mnie naprowadzić?
Go to the top of the page
+Quote Post
rama
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 25.02.2006
Skąd: Trójmiasto

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


Źródło: http://www.smarty.net/manual/en/installing.smarty.basic.php

Plik o nazwie index2.tpl w katalogu $smarty->template_dir
  1. Jakas {$variable}


  1. <?php
  2. // Ładuje nam klasę Smarty, która jest w ./smarty/
  3. require_once('./smarty/libs/Smarty.class.php');
  4.  
  5. // Tworzy instancję Smarty
  6. $smarty = new Smarty();
  7.  
  8. // Przypisujemy atrybuty.
  9. // Dobrym zwyczajem jest umieszczanie poniższych katalogów poza katalogiem htdocs.
  10. $smarty->template_dir = './templates/';
  11. $smarty->compile_dir  = './templates_c/';
  12. $smarty->config_dir   = './configs/';
  13. $smarty->cache_dir    = './cache/';
  14.  
  15. // Przypisujemy "zmienną" o nazwie variable o wartosci "zmienna"
  16. $smarty->assign('variable','zmienna');
  17.  
  18. // Wyrzuca wynik (tzn. generuje zawartość szablonu)
  19. $smarty->display('index.tpl');
  20. ?>


Jak łatwo zauważyć Smarty jest obiektem, gdzie definiujemy podstawowe atrybuty ($smarty->zmienna, np. $smarty->templete_dir), a następnie przypisujemy "zmiennym w szablonach" wartości ($smarty->assign('nazwa_zmiennej_w_szablonie', wartosc)). Później wyrzucamy wynik generowania szablonu ($smarty->display('index2.tpl'))
Go to the top of the page
+Quote Post
lahhott
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

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


Bardzo dziękuję za ten opis. Chodzi. Muszę teraz tylko na spokojnie wpleść to w większe pliki.

Jeszcze takie pytanie: jak poprawnie użyć zmiennej Smarty w następującym przykładzie. Otóż mam formularz <form> w pliku .tpl. Wewnątrz formularza jest użyty Smarty, pętla. Wygląda to mniej więcej tak:
Cytat
<form method="post" action="plik.php?action=xxxx">
....
{section name=xxxx loop=$xid}
<td><input type="checkbox" name="{$xid[xxxx]}" /></td>
<td><input type="text" name="{$amount[xxxx]}" /></td>
{/section}
....

$xid to ID rekordu w tabeli MySQL, skąd dane są wcześniej ściągnięte i obrobione. Natomiast do zmiennej $amount chciałbym "dynamicznie" przesłać dane formularzem. Ponieważ jest to w pętli dla wielu rekordów, sądzę iż to powinna być tabela. Nie wiem, gdzie taką zmienną zadeklarować oraz czy tak można. Następnie chciałbym te dane używać w pliku .php.

W jaki sposób potem mogę odwołać się w pliku .php do zmiennej $amount i zadać odpowiednie komendy do MySQL, aby zaktualizować odpowiednie ilości w bazie danych? W MySQL już sobie poradzę, jednak jak "przerzucić" dane z formularza do pliku .php aby je tam używać?

Ten post edytował lahhott 18.07.2009, 00:42:10
Go to the top of the page
+Quote Post
nmts
post
Post #4





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Cytat
W MySQL już sobie poradzę, jednak jak "przerzucić" dane z formularza do pliku .php aby je tam używać?


Ale o co chodzi? Wszystko masz w tablicy $_POST. Przetwarzasz w pętli każdy element i wysyłasz.
Go to the top of the page
+Quote Post
lahhott
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

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


Nie jestem pewien, jak się odwoływać do zmiennych poprzez $_POST. Czy coś poniższego:

plik.tpl
Cytat
<form method="post" action="plik.php?action=xxxx">
....
{section name=xxxx loop=$xid}
<td><input type="checkbox" name="{$xid[xxxx]}" /></td>
<td><input type="text" name="{$amount[xxxx]}" /></td>
{/section}
....
<input type="submit" name="wyslij" value="Wyślij">

plik.php
Cytat
if (isset($_GET['action']) && $_GET['action'] == "xxxx")
{
$zmienna=$_POST[$amount]
}
Czy też w plik.php również muszę wstawić pętlę?

Ten post edytował lahhott 18.07.2009, 12:53:21
Go to the top of the page
+Quote Post
nmts
post
Post #6





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Dynamicznie wypełniasz name, więc możesz nie wiedzieć czego się spodziewać, poniżej masz kod, którym odczytasz klucz i wartość każdego elementu tablicy POST.
  1. <?php
  2. while (list($key, $value) = each($_POST)) {
  3.    echo "Name: $key; Value: $value<br />\n";
  4. }
  5. ?>

Jeśli nie wiesz jak z tego skorzystać to może powinieneś się pouczyć podstaw..
Ps.
Autor odpowiada po kilku promilach - może się mylić.
Go to the top of the page
+Quote Post

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: 21.09.2025 - 19:21