Router vytvorí link, na ktorý potom reaguje #404 No route for HTTP request
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- OKweb
 - Člen | 12
 
Ahojte,
poprosím o pomoc s nasledovným problémom. V RouterFactory mám nasledovné routy:
		$router[] = new Route(
			'//shop.avg.sk/admin/[<presenter ^(?!Product).*>/[<action>/]]',
			array(
                'presenter' => 'Admin',
                'action' => 'default'
            )
        );
		$router[] = new Route(
			'//shop.avg.sk/<slug>/',
			array(
                'presenter' => 'Product',
                'action' => 'default'
            )
        );
V prvej route cez regulárny výraz vyraďujem výskyt slova „Product“, lebo pre prezentáciu produktov chcem špeciálne linky, ktoré sú definované v druhej route. Tie aj fungujú v poriadku, generuje ich aj dajú sa použiť. Rovnako správne funguje Admin:default a http://shop.avg.sk/admin/.
Problém mám, že {link Cisla:default} vygeneruje síce správny link http://shop.avg.sk/admin/cisla/, keď ho však otvorím, zahlási #404 No route for HTTP request.
Nevedel by mi niekto, prosím, poradiť, kde môže byť chyba? Ďakujem!
Editoval OKweb (10. 2. 2015 17:57)

- OKweb
 - Člen | 12
 
Obišiel som to takto:
		$router[] = new Route(
			'//shop.avg.sk/admin/[<presenter=Admin>/[<action=default>/]]',
			array(
                'presenter' => array(
                    Route::FILTER_IN => function($presenter) {
                        if (strtolower($presenter) == 'product')
                            return null;
                        else
                            return strtolower($presenter);
                    },
                    Route::FILTER_OUT => function($presenter) {
                        if (strtolower($presenter) == 'product')
                            return null;
                        else
                            return strtolower($presenter);
                    }
                )
            )
        );
		$router[] = new Route(
			'//shop.avg.sk/<slug>/',
			array(
                'presenter' => 'Product',
                'action' => 'default'
            )
        );