Router – Migrace z 2.2 na 2.3

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

Ahojt. Rad bych pomoc pri migraci na 2.3. V 2.2 vypadala jedna z mych route mask takto:

/**
  * @param Container $di
  * @return \Nette\Application\IRouter
  */
public static function createRouter(Container $di)
{
	// rest route
	$routes[] = new Route('api/<presenter>/[<action=default>]', array(
		'presenter' => array(
			Route::FILTER_IN => function ($presenter) {
				// i.e. demo to DemoRest, my-demo to MyDemoRest
				$parts = explode('-', $presenter);
				foreach ($parts as &$part) {
					$part = ucfirst($part);
				}

				return sprintf('%sRest', implode('', $parts));
			}
		)
	));
}

Po migraci na 2.3 se generuje chyba:

Nette\Application\BadRequestException #404 No route for HTTP request.

Jak by prosim bylo nutne modifikovat route mask?

Zajimave je, ze toto take nefunguje:

$routes[] = new Route('api/<presenter>/[<action=default>]', array(
	'presenter' => 'DemoRest'
));

Kdyz to zadam tzv. natvrdo:

$routes[] = new Route('api/demo/getDemoData', array(
	'presenter' => 'DemoRest'
));

.. tak maska projde. Skrze FILTER_IN po migraci na 2.3 nikoliv, pritom dokumentace pro 2.3 routovani filtry nijak nemeni.

Editoval DavidTheNewbie (24. 2. 2017 13:12)

CZechBoY
Člen | 3608
+
+1
-

Myslím, že právě řešíš stejnej problém jako ve vedlejším vláknu
https://forum.nette.org/…l-strtolower#…