SelectBox – lokalita – podlokalita – zjisteni lokality

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ondrej256
Člen | 187
+
0
-

Zdravím,

mám dotaz ohledně selectBoxu. Když vezmu příklad z dokumentace.

Mám selectbox kde mám na výběr z $countries

$countries = array(
    'Europe' => array(
        'CZ' => 'Czech republic',
        'SK' => 'Slovakia',
        'GB' => 'United Kingdom',
    ),
    'CA' => 'Canada',
    'US' => 'USA',
    '?'  => 'other',
);

Vyberu Czech republic, odešlu formulář. A teď když zpracovávám formulář potřebuju zjistit jaká lokalita byla vybrána. Odešle se mně hodnota Czech republic, jenže já potřebuju zjistit, pod který kontinent spadá Czech republic, tzn. potřebuju při zpracování zjistit, že patří pod Eurupe.

Existuje nějaký elegantní fígl?

romiix.org
Člen | 343
+
0
-

Pri spracovaní použi premennú $countries a vytiahni z nej potrebné informácie.

ondrej256
Člen | 187
+
0
-

Získal jsem hodnotu Czech republic a mám pole $countries

napsal jsem si vyhledávací funkci

public static function getContinent($countries, $country){
    foreach($countries as $key=>$arr){
            if(in_array($country,$arr)){
                    return $key; // vrati kontinent
            }
    }
}

Když tento skript spustím na hostingu bez frameworku tak funguje v pohodě. Když si ji dám do nette tak laděnka vyhodí chybu

Invalid argument supplied for foreach()

Nevíte v čem je problém?

Editoval ondrej256 (11. 7. 2014 10:40)

Michal Vyšinský
Člen | 608
+
0
-

V $countries nemáš array. Jak tu metodu voláš?

ondrej256
Člen | 187
+
0
-

Michal Vyšinský napsal(a):

V $countries nemáš array. Jak tu metodu voláš?

$this->getContinent($countries, "Czech republic");

ale myslím že je to napsáno správně, nevidím tam chybu, navíc mimo framework nette to funguje

Editoval ondrej256 (11. 7. 2014 10:43)

ondrej256
Člen | 187
+
0
-

Už jsem to vyřešil. vůbec nevím jak, ale najednou to funguje. Uvedený kód by měl být správně, mám ho stejně a funguje. Nevím proč předtím nešel

japlavaren
Člen | 404
+
0
-

ondrej256 napsal(a):

Už jsem to vyřešil. vůbec nevím jak, ale najednou to funguje. Uvedený kód by měl být správně, mám ho stejně a funguje. Nevím proč předtím nešel

niektore veci su medzi nebom a zemou ;)

ondrej256
Člen | 187
+
0
-

Ještě k tomuto tématu jedna otázka. Když mám takto udělaný selectBox tak není možné vybrat položku Europe , pod kterou spadají země jako Czech republic. Rád bych aby šlo vybrat i položku Europe. Je možné toho docílit?

Mysteria
Člen | 797
+
0
-

Není, musíš to udělat jako normální položku.

japlavaren
Člen | 404
+
0
-

kolega mi dnes ukazoval zaujimavy hack – das polozky normalne ako option. kategorie nastylujes option tag a podkategorie osadis pomocou   takto to ide docielit a funguje na tom ze ak zacnes pisat tak ti vyberie polozku (chrome, ostatne som netestoval)