Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [smarty] funkcje w smarty
pawel.b
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 5.02.2009
Skąd: Kraków

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


witam

mam w php funkcje którą rejestruje w smarty funkcja przyjmuje 3 parametry i zwraca tablice
Kod
function make_seed()
{
     list($usec,$sec) = explode(" ", microtime());
     return ((float)$sec+(float)$usec) * 100000;
}
mt_srand(make_seed());

function randomArray($params, &$smarty)
{
     $tmp = array();
     while(count($tmp) < $params['counter'])
     {
         $rand = mt_rand($params['from'],$params['to']);
         if(! in_array($rand,$tmp))
             $tmp[] = $rand;
     }
     return $tmp;
}

$smarty->register_function('randomArray','randomArray');

w szablonie mam tak
Kod
{capture name=returned_array}
    {randomArray counter=5 from=0 to=30}
{/capture}
{assign var=randArr value=$smarty.capture.returned_arry}
{$randArr[0]}

i oczywiście nie działa
pomożecie smile.gif

dzięki za pomoc

Ten post edytował pawel.b 27.03.2009, 11:03:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





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




nawet nie raczyles zajrzec do dokumentacji by zobaczyc jak sie to robi......
http://www.smarty.net/manual/en/plugins.php
http://www.smarty.net/manual/en/plugins.functions.php

popraw bbcode

edit:
no dobra, widze ze zrobiles to przy pomocy tego:
http://www.smarty.net/manual/en/api.register.function.php

wlacz sobie wyswietlanie bledow to moze jakis blad zobaczysz smile.gif


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

"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
pawel.b
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 5.02.2009
Skąd: Kraków

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


problemem nie jest rejestracja funkcji w smarty tylko przypisywanie jej wyniku do zmiennej w szablonie smarty. twierdze że tak jest ponieważ inne funkcje mi działają a rejestruje je identyczne.
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




to nie mogles od razu napisac w czym problem?

widze pewną niescisclosc miedzy slowem:
returned_array
a:
returned_arry

bbcode dla php to [php] a nie [code]


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

"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
Zyx
post
Post #5





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Funkcje w Smartym nie są tym samym, co w PHP (w ogóle nawet nie wiem, czemu nazwali to w ten sposób). Ten system szablonów automatycznie wyświetla to, co zwrócą, jako tekst wynikowy. Skoro Twoja "funkcja" zwraca tablicę, to sam sobie odpowiedz, dlaczego nie działa, wiedząc że

  1. <?php
  2. ?>


produkuje tekst "Array" smile.gif. Zamiast zwracać wartość, powinieneś wykorzystać dostarczany obiekt $smarty i przypisać wynik do jakiejś zmiennej metodą assign(). A tak ogólnie to jeśli nie jesteś na jakimś zaawansowanym etapie prac, gorąco polecam zmienić system szablonów na jakiś bardziej rozgarnięty smile.gif.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
pawel.b
post
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 5.02.2009
Skąd: Kraków

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


smile.gif racja
ale dalej nie działa tak jak chce

Kod
{$smarty.capture.returned_array} // wypisuje Array
{$smarty.capture.returned_array[0]} // nie wypisuje nic
{$smarty.capture.returned_array[1]} // wypisuje A
{$smarty.capture.returned_array[1]} // wypisuje r


niestety zmiana silnika szablonych odpada
pomóżcie jak uzyskać efekt o który pisze wyżej czyli wygenerować x losowych liczb z danego zakresu (a,cool.gif

Ten post edytował pawel.b 27.03.2009, 11:44:49
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




no ale zyx ci juz odpowiedzial:
Cytat
produkuje tekst "Array"


Cytat
Zamiast zwracać wartość, powinieneś wykorzystać dostarczany obiekt $smarty i przypisać wynik do jakiejś zmiennej metodą assign()


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

"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

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 Aktualny czas: 19.08.2025 - 15:33