Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nazwy kluczy tablic - odczyt w smarty
Forum PHP.pl > Forum > PHP
ersiv
mam taki problem, z jakiegoś tam miejsca otrzymuje tablice o nazwie np. "tablica" której klucze są tego typu nazwa-czegos-innego i teraz np ładuje ta tablicę do posta
...czyli mam coś tego typu $_POST['tablica']['nazwa-czegos-innego]

i odczytuje w smarty, i jest problem

nie mogę tego odczytać tak:

{$smarty.post.tablica.nazwa-czegos-innego}

co bardzo mnie drażni i muszę się do tych elementów dostawać w taki sposób:

{assign var=nazwa_czegos_innego value="nazwa-czgos-innego"}

{$smarty.post..tablica.$nazwa_czegos_innego}

nie podoba mi się to rozwiązanie, od razu mówię, że za dużo trudu w zmienianiu nazw w tablicy ten temat odpada,
chciał bym po prostu zrozumieć czemu nie mogę wstawiać nazw z minusami i czy to jest może gdzieś konfigurowalne że on nie traktuje "-" jako zwykłego znaku
Darti
Nie jestem pewien, ale wydaje mi sie ze on probuje zrobic odejmowanie. Np mając {$smarty.post.tablica.nazwa-czegos-innego} on odejmuje czegos i innego od $smarty.post.tablica.nazwa

To juz chyba lepiej zamieniac nazwy i nie jest to trudne (co prawda nie testowałem tego sposobu, moze zadziala), na pewno masz kawałek kodu który wykonuje sie zawsze.
  1. <?php
  2. function zamien_minusy(&$element,&$klucz){
  3.  $klucz = str_replace('-','_',$klucz);
  4. }
  5.  
  6. foreach ($_POST as $value){
  7. if (is_array($value)){
  8. array_walk($_POST,'zamien_minusy');
  9. }
  10. }
  11. ?>
rolnix
To może nie assignuj w php całego $_POST, jedynie $_POST['tablica']. Innym rozwiązanie wydaje się być {foreach from=$post.tablica key=xxx}, poczytaj o tym w manualu.
ersiv
Cytat(rolnix @ 2.11.2007, 09:39:37 ) *
To może nie assignuj w php całego $_POST, jedynie $_POST['tablica']. Innym rozwiązanie wydaje się być {foreach from=$post.tablica key=xxx}, poczytaj o tym w manualu.


Może dla wyjaśnienia, jest platforma która zakłada pewien standard że wartości do konfigurowania aplikacji zapisane xmlu mają po prostu takie nazwy "atrybut-sekcji-pierwszej", tak jest i już smile.gif, php jest tylko interfejsem do konfigurowania tego całego badziewia.

Nie wiem czy dobrze zrozumiałeś to co napisałem ale ja nie przypisuje całego posta do zmiennych smartowskich, zresztą i tek jest już przypisany czy tego chcesz czy nie {$smarty.post.blablabla}, assign którego użyłem służył mi jedynie do tego aby zamienić stringa ze znakami minus na coś innego.
Wiem jak działa smartowski foreach ale nie rozumiem co on może mi dać?

Jedynym rozwiązaniem wydają się być te assigny w smarty, albo zamiana "-" na np. "_" przy odczytywaniu xmla w phpie i potem to samo w drugą stronę przy zapisie.
I nie chodziło mi w tym poście o obejście tego problemu, potrafię sobie z tym poradzić smile.gif tylko o to aby ktoś wyjaśnił mi czemu kompilator smartowski w takim wypadku uznaje "-" jako znak odejmowania a nie kawałek stringa.
w smarty mam zmienną:
{$smarty.post.param-from-index}

a on sobie zamienia to na coś takiego:
  1. <?php echo $_POST['param']-$this->_tpl_vars['rom']-$this->_tpl_vars['ndex'] ?>


osobiście uważam że powinien analizować kontekst a nie jak widzi "-" to odejmować...
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.