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:18] 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 109: | 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 147: | Riadok 156: | ||
| - | ==== coolName ==== | + | ==== arguments==== |
| - | Parameter ''coolName'' určuje, čo bude zobrazené vo výslednej URI adrese. | + | Parameter ''arguments'' určuje, aké parametre sa zakódujú do výslednej URL adresy. |
| - | Môže byť ''string'' alebo ''array''. | + | Musí byť ''array'', ktorý bude obsahovať ďalší ''array''. |
| - | Ak bude ''array'', potom môže obsahovať informáciu o kóde jazyka, pre ktorý je dané coolName určené. | + | 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 space=2> | + | |
| + | <code php bMyRouter.php space=2> | ||
| $routes["my_route1"] = array( | $routes["my_route1"] = array( | ||
| - | "coolName" => "cesta1", | + | "arguments" => array( |
| + | "1" => array( | ||
| + | "meno", | ||
| + | "vek", | ||
| + | ), | ||
| + | ), | ||
| # ... | # ... | ||
| </code> | </code> | ||
| - | Skript bude reagovať na URL adresu | + | <code php test.php space=2> |
| - | \\ ''http://studio2.local/r/cesta1/1/Jozef/24'' | + | $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 space=2> | + | <code php bMyRouter.php space=2> |
| $routes["my_route1"] = array( | $routes["my_route1"] = array( | ||
| - | "coolName" => array( | + | "arguments" => array( |
| - | "cesta1", | + | "1" => array( |
| - | "moja-cesta1", | + | "meno", |
| - | "my-path1", | + | "vek", |
| + | ), | ||
| + | "2" => array( | ||
| + | "meno", | ||
| + | "vek", | ||
| + | "vyska", | ||
| + | ), | ||
| ), | ), | ||
| # ... | # ... | ||
| </code> | </code> | ||
| - | Skript bude reagovať na URL adresy: | + | <code php test.php space=2> |
| - | \\ ''http://studio2.local/r/cesta1/1/Jozef/24'' | + | $router = $this->app->initCoreModule("router"); |
| - | \\ ''http://studio2.local/r/moja-cesta1/1/Jozef/24'' | + | echo $router->getRoute("my_route1", array( |
| - | \\ ''http://studio2.local/r/my-path1/1/Jozef/24'' | + | "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 space=2> | ||
| - | $routes["my_route1"] = array( | ||
| - | "coolName" => array( | ||
| - | "cesta1" => "sk", | ||
| - | "moja-cesta1" => "sk", | ||
| - | "my-path1" => "en", | ||
| - | ), | ||
| - | # ... | ||
| - | </code> | ||
| - | |||
| - | Skript bude reagovať na adresy ako v predchádzajúcom prípade. | ||
| - | \\ 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. | ||
| - | |||
| - | Príklad, v ktorom budeme preferovať anglický jazyk: | ||
| <code php test.php space=2> | <code php test.php space=2> | ||
| $router = $this->app->initCoreModule("router"); | $router = $this->app->initCoreModule("router"); | ||
| Riadok 203: | Riadok 231: | ||
| "meno" => "Jozef", | "meno" => "Jozef", | ||
| "vek" => 24, | "vek" => 24, | ||
| - | ), | ||
| - | array( | ||
| - | "langId" => "en", | ||
| )); | )); | ||
| </code> | </code> | ||
| - | <code smarty test.tpl space=2> | + | Výsledok: |
| - | {getRoute routeIdf="my_route1" routeLangId="en" meno="Jozef" vek=24} | + | <code> |
| + | http://studio2.local/r/cesta1/2/Jozef/24/ | ||
| </code> | </code> | ||
| - | Výstup v obidvoch prípadoch bude: | + | |
| - | <code> | + | |
| - | http://studio2.local/r/my-path1/1/Jozef/24 | + | |
| - | </code> | + | |
| ----- | ----- | ||