在CakePHP中,我想转换此网址
example.com/FAQ/What-came-first-the-chicken-or-the-egg
到
example.com/FAQ#What-came-first-the-chicken-or-the-egg
使用routes.php
并让浏览器滚动到该锚点。
我试过了:
Router::connect('/FAQ/:faq',
array('controller' => 'pages', 'action' => 'faq', '#' => ':faq'),
array('faq' => '[A-Za-z-_]+')
);
如果我那么debug($this->request->params)
,则说
array(
'plugin' => null,
'controller' => 'pages',
'action' => 'FAQ',
'named' => array(),
'pass' => array(),
'faq' => 'What-came-first-the-chicken-or-the-egg',
'#' => ':faq'
)
并且浏览器不会在任何地方滚动。
答案 0 :(得分:0)
网络服务器有no visibility whatsoever of the url fragment,因为基于网址片段的路由永远不会有效。
如果您在浏览器中请求网址/Foo/#hash
,则服务器只会收到/Foo/
- 这是蛋糕看到的网址,如果您不这样做,这是必须与路线匹配的网址想看错误。因此,您的路线必须是:
Router::connect('/FAQ',
array('controller' => 'pages', 'action' => 'faq')
);
顺便提一下,这是一个奇怪的路线 - 页面控制器带有动态显示功能,在这个控制器中创建动作是不正常的,而不是像这样使用它:
Router::connect('/FAQ',
array('controller' => 'pages', 'action' => 'display', 'faq')
);
答案 1 :(得分:-1)
我没有测试过它:
Router::connect('/FAQ/#:faq',
array('controller' => 'pages', 'action' => 'faq'),
array(
'pass' => array('faq'),
'faq' => '[A-Za-z-_]+'
)
);