Created
February 20, 2019 12:22
-
-
Save landsman/3daafdd29d166ed78d585c513b7fcda0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App; | |
use Nette; | |
use Nette\Application\Routers\RouteList; | |
use Nette\Application\Routers\Route; | |
use Kdyby\Doctrine\EntityManager; | |
use App\Model\CatalogModel; | |
use App\Model\PageModel; | |
class RouterFactory | |
{ | |
/** | |
* @var EntityManager | |
*/ | |
public $entityManager; | |
private $cmsRoutes = []; | |
public function __construct(CatalogModel $catalogModel, PageModel $pageModel) | |
{ | |
//todo: temporary fix for creating DB schema (DB table doesn't exist at that moment) | |
try { | |
$this->cmsRoutes = $pageModel->FindCMSPageUrl(); | |
} catch (\Exception $e) { | |
} | |
} | |
/** | |
* @return array|RouteList | |
*/ | |
private function createCatalogRouter() | |
{ | |
$router = new RouteList('Catalog'); | |
/** Redirects */ | |
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY); | |
$router[] = new Route('index.html', 'Homepage:default', Route::ONE_WAY); | |
$router[] = new Route("kategorie/<id>-<slug>", [ | |
"presenter" => "Homepage", | |
"action" => "category", | |
"id" => null, | |
"slug" => null | |
]); | |
$router[] = new Route("produkt/<id>-<slug>", [ | |
"presenter" => "Homepage", | |
"action" => "item", | |
"id" => null, | |
"slug" => null | |
]); | |
$router[] = new Route("priloha/<id>", [ | |
"presenter" => "Homepage", | |
"action" => "attachment", | |
"id" => null | |
]); | |
$router[] = new Route("vyrobce/<id>-<slug>", [ | |
"presenter" => "Homepage", | |
"action" => "producer", | |
"id" => null, | |
"slug" => null | |
]); | |
/** | |
* Search | |
*/ | |
$router[] = new Route("hledat", [ | |
"presenter" => "Homepage", | |
"action" => "search", | |
]); | |
/** | |
* Cart | |
*/ | |
$router[] = new Route("kosik", [ | |
"presenter" => "Cart", | |
"action" => "default", | |
]); | |
$router[] = new Route("kosik/objednat", [ | |
"presenter" => "Cart", | |
"action" => "info", | |
]); | |
$router[] = new Route("kosik/objednat", [ | |
"presenter" => "Cart", | |
"action" => "info", | |
]); | |
$router[] = new Route("kosik/doprava-a-platba", [ | |
"presenter" => "Cart", | |
"action" => "paymentTransfer", | |
]); | |
$router[] = new Route("kosik/dokonceni-objednavky", [ | |
"presenter" => "Cart", | |
"action" => "summary", | |
]); | |
$router[] = new Route("kosik/dekujeme-za-objednavku", [ | |
"presenter" => "Cart", | |
"action" => "completed", | |
]); | |
$router[] = new Route("registrace", [ | |
"presenter" => "User", | |
"action" => "registration", | |
]); | |
$router[] = new Route("registrace-uspesna", [ | |
"presenter" => "User", | |
"action" => "registrationSuccessful", | |
]); | |
/** | |
* CMS pages | |
*/ | |
foreach($this->cmsRoutes as $id => $url) | |
{ | |
$router[] = new Route($url, [ | |
"presenter" => "Page", | |
"action" => "default", | |
"id" => $id | |
]); | |
} | |
return $router; | |
} | |
/** | |
* @return Nette\Application\IRouter | |
*/ | |
private function createApiRouter() | |
{ | |
$router = new RouteList('API'); | |
$router[] = new Route("sitemap.xml", "Homepage:sitemap"); | |
$router[] = new Route("api/fman", "Fman:default"); | |
$router[] = new Route("api/fman/connector", "Fman:connector"); | |
$router[] = new Route('api/<presenter>/<action>[/<id>]', [ | |
"presenter" => "Homepage", | |
"action" => "default", | |
"id" => null | |
]); | |
return $router; | |
} | |
/** | |
* @return Nette\Application\IRouter | |
*/ | |
public function createRouter() | |
{ | |
$router = new RouteList(); | |
/** Admin */ | |
$router[] = new Route("admin/<presenter>/<action>[/<id>]", [ | |
"module" => "Admin", | |
"presenter" => "Homepage", | |
"action" => "default" | |
]); | |
$router[] = new Route("fman", [ | |
"module" => "Admin", | |
"presenter" => "Fman", | |
"action" => "default", | |
]); | |
/** E-shop */ | |
$router[] = $this->createCatalogRouter(); | |
/** API */ | |
$router[] = $this->createApiRouter(); | |
/** Homepage */ | |
$router[] = new Route('<presenter>/<action>[/<id>]', 'Catalog:Homepage:default'); | |
return $router; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment