我在cakephp中重写我们公司的网站,需要找到一种方法来执行以下操作:
我考虑了几个选项,其中没有一个看起来适合这个目的.他们是:
我真的可以在应用程序流,我可以把这个查找/跟踪脚本的地方做的,我是相当新的蛋糕,所以我很为难.
编辑:此外,我知道一个名为'promo'的子文件夹很容易做到这一点,但我有很多来自我们旧网站的遗留URL,也需要处理.
注意:我假设你的促销网址是"domain.com/advert-259"或类似的形式(即没有"domain.com/ adverts/advert-259").这只是太简单 :)
希望您可以使用一些正则表达式的路由.将此添加到您的/config/routes.php并让我知道一个不同的正则表达式将有助于:)
$controllers = Configure::listObjects('controller');
foreach ($controllers as &$value)
{
$value = Inflector::underscore($value);
}
Router::connect('/:promo', array('controller' => 'promos', 'action' => 'process'), array('promo' => '(?!('.implode('|', $controllers).')\W+)[a-zA-Z\-_]+/?$'));
Run Code Online (Sandbox Code Playgroud)
现在您可以处理所有促销代码了PromosController::process().
基本上,它检查url中的促销代码,不包括 $ controllers数组中的促销代码(即您的常规路由不会搞砸).
稍后您可能需要考虑Configure::listObjects()根据应用程序的速度和要求缓存值.
| 归档时间: |
|
| 查看次数: |
2203 次 |
| 最近记录: |