Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dev:omega:php:router [2015/01/19 20:09] Roman Sališ [coolName] |
dev:omega:php:router [2015/01/19 20:41] (aktuálne) Roman Sališ [Definovanie ciest] |
||
---|---|---|---|
Riadok 45: | Riadok 45: | ||
function myRouteCallback($settings = array(), $argumentsVersion = NULL) | function myRouteCallback($settings = array(), $argumentsVersion = NULL) | ||
{ | { | ||
- | echo "Callback, argumentsVersion=$argumentsVersion<br>\n"; | + | echo "<pre>Callback, argumentsVersion=$argumentsVersion\n"; |
var_export($settings); | var_export($settings); | ||
} | } | ||
Riadok 72: | Riadok 72: | ||
</code> | </code> | ||
+ | Po zavolaní tejto URL adresy dostaneme v prehliadači výsledok: | ||
+ | <code> | ||
+ | Callback, argumentsVersion=1 | ||
+ | array ( | ||
+ | 'meno' => 'Jozef', | ||
+ | 'vek' => '24', | ||
+ | ) | ||
+ | </code> | ||
+ | ----- | ||
==== coolName ==== | ==== coolName ==== | ||
Riadok 79: | Riadok 88: | ||
Ak bude ''array'', potom môže obsahovať informáciu o kóde jazyka, pre ktorý je dané coolName určené. | Ak bude ''array'', potom môže obsahovať informáciu o kóde jazyka, pre ktorý je dané coolName určené. | ||
- | <code php space=2> | + | <code php bMyRouter.php space=2> |
$routes["my_route1"] = array( | $routes["my_route1"] = array( | ||
"coolName" => "cesta1", | "coolName" => "cesta1", | ||
Riadok 90: | Riadok 99: | ||
----- | ----- | ||
- | <code php space=2> | + | <code php bMyRouter.php space=2> |
$routes["my_route1"] = array( | $routes["my_route1"] = array( | ||
"coolName" => array( | "coolName" => array( | ||
Riadok 96: | Riadok 105: | ||
"moja-cesta1", | "moja-cesta1", | ||
"my-path1", | "my-path1", | ||
+ | ), | ||
# ... | # ... | ||
</code> | </code> | ||
Riadok 108: | Riadok 118: | ||
- | <code php space=2> | + | <code php bMyRouter.php space=2> |
$routes["my_route1"] = array( | $routes["my_route1"] = array( | ||
"coolName" => array( | "coolName" => array( | ||
Riadok 114: | Riadok 124: | ||
"moja-cesta1" => "sk", | "moja-cesta1" => "sk", | ||
"my-path1" => "en", | "my-path1" => "en", | ||
+ | ), | ||
# ... | # ... | ||
</code> | </code> | ||
Riadok 120: | Riadok 131: | ||
\\ Pri generovaní cesty pomocou ''getRoute()'' máme možnosť zvoliť, ktorý **coolName** sa použije na základe parametra ''langId''. | \\ Pri generovaní cesty pomocou ''getRoute()'' máme možnosť zvoliť, ktorý **coolName** sa použije na základe parametra ''langId''. | ||
Ak nebude parameter ''langId'' nastavený, SystemOmega sa bude snažiť použiť jazyk podľa aktuálne prihláseného užívateľa. | Ak nebude parameter ''langId'' nastavený, SystemOmega sa bude snažiť použiť jazyk podľa aktuálne prihláseného užívateľa. | ||
+ | |||
+ | Príklad, v ktorom budeme preferovať anglický jazyk: | ||
+ | <code php test.php space=2> | ||
+ | $router = $this->app->initCoreModule("router"); | ||
+ | echo $router->getRoute("my_route1", array( | ||
+ | "meno" => "Jozef", | ||
+ | "vek" => 24, | ||
+ | ), | ||
+ | array( | ||
+ | "langId" => "en", | ||
+ | )); | ||
+ | </code> | ||
+ | |||
+ | <code smarty test.tpl space=2> | ||
+ | {getRoute routeIdf="my_route1" routeLangId="en" meno="Jozef" vek=24} | ||
+ | </code> | ||
+ | |||
+ | Výstup v obidvoch prípadoch bude: | ||
+ | <code> | ||
+ | http://studio2.local/r/my-path1/1/Jozef/24 | ||
+ | </code> | ||
+ | |||
+ | ----- | ||
+ | |||
+ | |||
+ | ==== arguments==== | ||
+ | |||
+ | Parameter ''arguments'' určuje, aké parametre sa zakódujú do výslednej URL adresy. | ||
+ | Musí byť ''array'', ktorý bude obsahovať ďalší ''array''. | ||
+ | Prvý ''array'' musí obsahovať číselný kľúč, ktorý určuje verziu parametrov. | ||
+ | Verzia parametrov je nástroj, pomocou ktorého zaručujeme spätnú kompatibilita. | ||
+ | Ak dnes používame verziu parametrov **1**, ktorá obsahuje 2 parametre a o pol roka zavedieme verziu **2** s 3 parametrami, musíme zaručiť, aby odkazy vygenerované vo verzii **1** boli stále platné a funkčné. | ||
+ | |||
+ | |||
+ | <code php bMyRouter.php space=2> | ||
+ | $routes["my_route1"] = array( | ||
+ | "arguments" => array( | ||
+ | "1" => array( | ||
+ | "meno", | ||
+ | "vek", | ||
+ | ), | ||
+ | ), | ||
+ | # ... | ||
+ | </code> | ||
+ | <code php test.php space=2> | ||
+ | $router = $this->app->initCoreModule("router"); | ||
+ | echo $router->getRoute("my_route1", array( | ||
+ | "meno" => "Jozef", | ||
+ | "vek" => 24, | ||
+ | )); | ||
+ | </code> | ||
+ | |||
+ | Výsledok: | ||
+ | <code> | ||
+ | http://studio2.local/r/cesta1/2/Jozef/24 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ----- | ||
+ | Funkcia ''getRoute'' použije najvyššiu verziu parametrov. | ||
+ | |||
+ | <code php bMyRouter.php space=2> | ||
+ | $routes["my_route1"] = array( | ||
+ | "arguments" => array( | ||
+ | "1" => array( | ||
+ | "meno", | ||
+ | "vek", | ||
+ | ), | ||
+ | "2" => array( | ||
+ | "meno", | ||
+ | "vek", | ||
+ | "vyska", | ||
+ | ), | ||
+ | ), | ||
+ | # ... | ||
+ | </code> | ||
+ | |||
+ | <code php test.php space=2> | ||
+ | $router = $this->app->initCoreModule("router"); | ||
+ | echo $router->getRoute("my_route1", array( | ||
+ | "meno" => "Jozef", | ||
+ | "vek" => 24, | ||
+ | "vyska" => 180, | ||
+ | )); | ||
+ | </code> | ||
+ | |||
+ | Výsledok: | ||
+ | <code> | ||
+ | http://studio2.local/r/cesta1/2/Jozef/24/180 | ||
+ | </code> | ||
+ | |||
+ | ----- | ||
+ | |||
+ | Ak by sme nezadali parameter ''vyska'', aj tak by sa vygenerovala verzia **2** (násl. príklad). | ||
+ | |||
+ | <code php test.php space=2> | ||
+ | $router = $this->app->initCoreModule("router"); | ||
+ | echo $router->getRoute("my_route1", array( | ||
+ | "meno" => "Jozef", | ||
+ | "vek" => 24, | ||
+ | )); | ||
+ | </code> | ||
+ | |||
+ | Výsledok: | ||
+ | <code> | ||
+ | http://studio2.local/r/cesta1/2/Jozef/24/ | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
----- | ----- |