Routování tvorba odkazů a zbytečné přesměrování

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

Zdravím
Nette: 2.0.10, php 5.3

Začínám routovat a nevím kde dělám chybu. Snažím se přejmenovat akci třeba z alphabetical na abecede a nette do htmlka mi vypíše odkaz ve tvaru domena.cz/Test/alphabetical_a kliknu na něj a az ted dojde k presmerovani na domena.cz/Test/Abecede_a kde jsou zase všechny odkazy ve tvaru domena.cz/Test/alphabetical_a

Odkaz:

<a href="{link Bi:Alphabetical a}">A</a>

RouterFactory:

$router = new RouteList();

$router[] = new Route('Test/<action>[_<letter>]', array(
    'module' => 'Front',
    'presenter' => 'Bi',
    'action' => array(Route::VALUE => 'default',
        Route::FILTER_TABLE => array('Abecede' => 'alphabetical')
    )
));

Jak dosahnout toho aby se vypisovaly odkazy už ve tvaru domena.cz/Test/Abecede_a ? Díky moc

Editoval newbie (25. 5. 2013 11:24)

SontoEremo
Člen | 341
+
0
-

Nazdar ale pokiaľ viem

class RouterFactory
{

	/**
	 * @return Nette\Application\IRouter
	 */
	public function createRouter()
	{
		$router = new RouteList();
		$router[] = new Route('index.php', 'Test:Bi:alphabetical', Route::ONE_WAY);
$router[] = new Route('Test/<action>[_<letter>][/<id>]', array(
    'module' => 'Test',
    'presenter' => 'Bi',
    'action' => array(Route::VALUE => 'default',
        Route::FILTER_TABLE => array('Abecede' => 'alphabetical')
    )
));
$router[] = new Route('<presenter>/<action>[/<id>]', 'Test:Bi:alphabetical');
		return $router;

musíš mať TestModule nie FrontModule. A to <letter> nemáš nikde definované

Editoval SontoEremo (25. 5. 2013 11:01)

newbie
Člen | 31
+
0
-

Tak jsem pokročil:

$router = new RouteList();

$router[] = new Route('Test/<action>[_<letter>]', array(
    'module' => 'Front',
    'presenter' => 'Bi',
    'action' => array(Route::VALUE => 'alphabetical',
        Route::FILTER_TABLE => array('Abecede' => 'alphabetical')
    )
));

Už vypisuje urlka tak jak chci

Test/Abecede_n

, ale ještě se potřebuju zbavit

Test/default

Editoval newbie (25. 5. 2013 11:24)

newbie
Člen | 31
+
0
-

Tak jsem to vyřešil… asi ne moc elegantně, nevím jestli správně a určitě to jde nějak jednodušeji, ale:

$frontRouter[] = new Route('Kapely_a_Intepreti/', array(
    'module' => 'Front',
    'presenter' => 'Bi',
    'action' => 'default'
));
$frontRouter[] = new Route('Kapely_a_Intepreti/<action>[_<letter>]/', array(
    'module' => 'Front',
    'presenter' => 'Bi',
    'action' => array(Route::VALUE => 'alphabetical',
        Route::FILTER_TABLE => array('Abecede' => 'alphabetical')
    )
));