gpt4 book ai didi

CakePHP 在路由中使用正则表达式变量捕获?

转载 作者:行者123 更新时间:2023-12-04 06:35:01 26 4
gpt4 key购买 nike

在我的 CakePHP 应用程序中,我的静态页面设置如下:

Router::connect(
'/terms',
array('controller' => 'pages', 'action' => 'display', 'terms')
);

这将重写 /terms/pages/display/terms使 URL 更漂亮更短。

现在,如果我想对所有静态页面都这样做,那将变得非常多余:
Router::connect(
'/terms',
array('controller' => 'pages', 'action' => 'display', 'terms')
);
Router::connect(
'/privacy',
array('controller' => 'pages', 'action' => 'display', 'privacy')
);
Router::connect(
'/about',
array('controller' => 'pages', 'action' => 'display', 'about')
);

使用常规 mod_rewrite 您可以执行以下操作:
/(terms|privacy|about) /pages/display/$1

所以我很自然地尝试了这个:
Router::connect(
'/(terms|privacy|about)',
array('controller' => 'pages', 'action' => 'display', '$1')
);

这没用。是否支持这样的事情,如果有,你怎么做?

最佳答案

就在我的脑海中,这可能会解决问题。要对某个部分执行正则表达式匹配,您需要这样做:

Router::connect(
'/:page',
array(
'controller' => 'pages',
'action' => 'display',
),
array(
'page' => '(terms|privacy|about)',
'pass' => array('page')
)
);

注意 page URL 中的占位符在第三个参数数组中进行推断。在那里我们说它必须匹配提供的正则表达式。另外值得注意的是,它还说要通过 page action 的占位符方法。这样它就知道要渲染哪个页面。

关于CakePHP 在路由中使用正则表达式变量捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com