Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty] Array to string conversion
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
Kubus
Witam,

Od jakiegos czasu wali mi bledami "Array to string conversion" w Smarty.class.php linijka 1688

  1. <?php
  2. function _run_mod_handler()
  3. {
  4. $_args = func_get_args();
  5. list($_modifier_name, $_map_array) = array_splice($_args, 0, 2);
  6. list($_func_name, $_tpl_file, $_tpl_line) =
  7. $this->_plugins['modifier'][$_modifier_name];
  8.  
  9. $_var = $_args[0];
  10. foreach ($_var as $_key => $_val) {
  11. $_args[0] = $_val;
  12. $_var[$_key] = call_user_func_array($_func_name, $_args);
  13. }
  14. return $_var;
  15. }
  16. ?>


to dokladnie linijka

  1. <?php
  2. $_var[$_key] = call_user_func_array($_func_name, $_args);
  3. ?>


Zaktualizowalem biblioteki do najnowszej wersji i to nic nie dalo, wczesniej tego bledu nie mialem.

Blad pojawia sie przy uzywaniu {section} i wyskakuje tyle razy, ile razy wykonuje sie ta petla.
To moja wina, czy smartiego?
Wywalilem na chwile wszystkie moje modyfikatory, default_modifiers, przejrzalem kod konfiguracyjny smartiego i nic zlego tam nie ma sad.gif
Cienki1980
Skoro zmiana bibliotek nie pomogła może to oznaczać, że podajesz złe dane do {section}.
Pokaż ten kawałek tpl'a .. no i może php'a gdzie tworzysz tablice wyświetlaną po stronie szablonu.
Kubus
Ogolnie wszystko wyglada jakby dzialalo bo section wyswietla poprawnie

Tablica

  1. <?php
  2. (
  3. [0] => Array
  4. (
  5. [id] => 1
  6. [tytul] => ala
  7. )
  8. [1] => Array
  9. (
  10. [id] => 2
  11. [tytul] => kot
  12. )
  13. )
  14. ?>


Section

  1. {section name="t" loop=$tmp.test}
  2. {$tmp.test[t].id} - {$tmp.test[t].tytul}
  3. {/section}


Nie bylo problemu do chyba wczoraj, moze cos sie na serwerze zmienilo...
Cienki1980
Hmm rzeczywiście bardzo dziwne.
Zrobiłem dokładnie takie same dane u siebie na lokalu i koncie na webd.pl i nie pokazał mi się żaden komunikat.


Na to by wyglądało, jakbyś miał zdefiniowaną jakąś funkcję ( plugin, modyfikator ), która wywołuje się podczas wywoływania {section} ... ten kod z klasy Smartiego chyba za to odpowiada.
Kubus
Jak znajde wolna chwile, to jeszcze popatrze, moze cos surowego postawie zeby wyeliminowac sprawe serwera i php...

Witam,

Uporalem sie z bledem, okazalo sie, ze to default_modifiers

  1. <?php
  2. $smarty -> default_modifiers = array ("stripslashes", "trim");
  3. ?>


Przy kazdej petki section wywalalo blad, bo smarty stosowal te funkcje rowniez do tablic, ale stworzylem wlasne

  1. <?php
  2. function smarty_array_stripslashes ($text) {
  3. if (is_array ($text))
  4. return $text;
  5. else
  6. return stripslashes ($text);
  7. }
  8.  
  9. function smarty_array_trim ($text) {
  10. if (is_array ($text))
  11. return $text;
  12. else
  13. return trim ($text);
  14. }
  15. ?>


i tak dziala

  1. <?php
  2. $smarty -> default_modifiers = array ("smarty_array_stripslashes", "smarty_array_trim");
  3. ?>


Jest jakies inne prostsze rozwiazanie? blinksmiley.gif


Dla nie wiedzacych - zeby zmiana default_modifiers zadzialala, nalezy wyczyscic skompilowane szablony z katalogu templates_c biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.