![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 9.06.2003 Skąd: Tomaszów Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Tytuł zawiły ale w gruncie rzeczy prosta sprawa tylko nie wiem jak to nazwać. Poniższy przykład jest specjalnie przygotowany aby było łatwiej go zrozumieć. Muszę przekazać wartość tablicy o indeksie id do własnej funkcji/pluginu. Póki robię to tak jak jest w pierwszej linijce index.tpl to wszystko działa. Niestety mam trochę większe potrzeby ale o tym na końcu. Oto przykładowa aplikacja:
index.php
index.tpl
wynik Cytat 1 Array.id Array['id'] Skompilowany plik: No i kto mi teraz doradzi jak ja mam przekazać wartość zmiennej $zmienna[0]['id'] skoro w rzeczywistości tak używam mojego pluginu: Cytat {zapytanie nazwa='zdjecie' select='id, opis' from='nt_strony_zdjecia' where="strona=WARTOSC_NASZEJ_ZMIENNEJ" order='sort' limit='1'} Jak widać w pliku index.tpl próbowałem różnych sposobów i nic nie wychodzi :/ Widać wyraźnie w skompilowanym pliku, że smarty głupieje :/ Co prawda znalazłem rozwiązanie ale wcale mi się ono nie podoba. Robię coś takiego: Cytat {assign var='zdjecie_id' value=$zdjecie[0].id} {zapytanie nazwa='zdjecie' select='id, opis' from='nt_strony_zdjecia' where="strona=$zdjecie_id" order='sort' limit='1'} Działa ale to takie... nieeleganckie ;P Jakieś pomysły na rozwiązanie? Ten post edytował MariuszT 17.01.2008, 11:35:05 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat {zapytanie nazwa='zdjecie' select='id, opis' from='nt_strony_zdjecia' where="strona="|cat:$zmienna[0].id order='sort' limit='1'} więcej o łączeniu stringów tutaj. Ten post edytował Cezar708 17.01.2008, 12:05:30 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 9.06.2003 Skąd: Tomaszów Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Przyznam, że o tym nie pomyślałem. I już mógłbym kliknąć przycisk "Pomógł" gdyby nie to:
Cytat {zapytanie nazwa='zdjecie' select='id, opis' from='nt_strony_zdjecia' where="strona=WARTOSC_NASZEJ_ZMIENNEJ AND inny_warunek=x" order='sort' limit='1'} Ten plugin ma za zadanie wyciągać wyniki z bazy danych i przesyłać je bezpośrednio do smarty z pominięciem plików .php więc zapytania mogą być niekiedy dość skomplikowane i nie wystarczy zwykłe dołączenie wartości na końcu |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
hmm szczerze mówiąc może źle to rozumiem, ale dlaczego by nie:
Cytat {zapytanie nazwa='zdjecie' select='id, opis' from='nt_strony_zdjecia' where="strona="|cat:$zmienna[0].id|cat:" AND inny_warunek=x" order='sort' limit='1'} .. czyli kilka razy użycie |cat:, może jest jakieś drugie dno? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 9.06.2003 Skąd: Tomaszów Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Masz rację, znowu się nie zastanowiłem tylko szybko odpowiedziałem. Twoje rozwiązanie jest skuteczne. Szkoda tylko, że trzeba tak kombinować ;/ Nie rozumiem czemu smarty ucina .id :/
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
a możesz mi odpowiedzieć na jedno pytanie? Dlaczego mieszasz warstwę prezentacji (widoku) z warstwą modelu. Dlaczego wywołujesz zapytania do bazy danych z poziomu templatu SMARTY? Nie jest to dobra praktyka. Na pewno jest jakieś lepsze rozwiązanie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 9.06.2003 Skąd: Tomaszów Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Wiedziałem, że ktoś zada takie pytanie
![]() Koleś chce sobie np. zrobić podstronę www.example.com/newsy/ więc tworzy newsy.tpl, tam wsadza zapytanie do bazy danych o newsy ze swojej strony i gotowe, działa ![]() Ten post edytował MariuszT 17.01.2008, 15:37:03 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Twoje rozwiązanie jest... niestandardowe...
Ale jeśli chcesz aby twórcy podstron mieli dostęp tylko do bazy i do template a nie mieli do kodów PHP to może stwórz na każdego użytkownika jego "domowy katalog na php". W takim pliku będzie mógł sobie do woli pracować, bez żadnych ograniczeń. A zawsze taki plik można zaincludować w pliku *.tpl za pomocą {include_php}. Dzięki takiemu rozwiązaniu nie zwiążesz rąk użytkownikowi, a na pewno dla takiego będzie większe pole manewru. Pozdrawiam |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 1 Dołączył: 9.06.2003 Skąd: Tomaszów Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Hehe wiem, że rozwiązanie jest niestandardowe ale bardzo praktyczne
![]() ![]() Swoją drogą, jak już poznałeś moje założenia to zadam jeszcze jedno pytanie. Czy jest coś jeszcze w zabezpieczeniach o czym powinienem pamiętać oprócz wyłączenia {include_php} i {php} ? Tagi <?php ?> są traktowane standardowo czyli po prostu wyświetlane. EDIT 10.02.2008 Znalazłem przez przypadek rozwiązanie problemu - może komuś się przyda. Nie trzeba używać żadnych sztuczek, wystarczy zmienną wcisnąć między `` ![]() Cytat {zapytanie nazwa='zdjecie' select='id, opis' from='nt_strony_zdjecia' where="strona=`$zdjecie[0].id`" order='sort' limit='1'} I smarty prawidłowo rozpoznaje, że to tablica. Ten post edytował MariuszT 10.02.2008, 20:33:20 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 10:30 |