Я пытаюсь перенаправить на другое действие, основанное на расширении url в Cake2. У меня есть этот рабочий маршрут:
Router::connect(
'/:lang/:product/:version/:filename',
array(
'controller' => 'pages',
'action' => 'run',
'lang' => ':lang',
'product' => ':product',
'version' => ':version',
'filename' => ':filename'
),
array(
'pass' => array('filename'),
'lang' => '[a-zA-Z]{2}',
'product' => '[a-zA-Z0-9_!\-]+',
'version' => '[0-9]{3}',
'filename' => '[a-zA-Z0-9_!\-\.]+'
)
);
Для нового маршрута я просто добавил расширение и изменил действие.
Router::connect(
'/:lang/:product/:version/:filename.json',
array(
'controller' => 'pages',
'action' => 'get',
'lang' => ':lang',
'product' => ':product',
'version' => ':version',
'filename' => ':filename'
),
array(
'pass' => array('filename'),
'lang' => '[a-zA-Z]{2}',
'product' => '[a-zA-Z0-9_!\-]+',
'version' => '[0-9]{3}',
'filename' => '[a-zA-Z0-9_!\-\.]+'
)
);
По какой-то причине действие run
все еще вызывается (включая ext, поэтому /../pages/json/run.ctp).
Спасибо за вашу помощь!