在 Cakephp 中编写自动路由

Writing automatic routes in Cakephp

我可以使用 Router :: connect 2x CakePHP 编写自己的自动路由吗? 我需要在数据库中写入我的路由,并使用我的数据库将参数传递给 routes.php 文件,以创建一个友好的 URL.

我有这样的东西(但我必须手工做):

Router :: connect ('/ Mycity / gifts / *', array ('controller' => 'shops', 'action' => 'result', 'F', null, '1', '4'));

我需要这样的东西(自动化流程):

Router::connect('/'.$city.'/'.$shop.'/*',array('controller'=>'shops','action'=>'result','.$genre.',null,'1','4'));

您首先需要实例化您的对象(更多信息 Using Model in routes file, cakephp

// City model
App::uses('City', 'Model');
$cityModel = new City();
$cities = $cityModel->find('all');
// Shop model
App::uses('Shop', 'Model');
$shopModel = new Shop();
$shops = $shopModel->find('all');

然后你可以遍历它们并创建动态路由

foreach ($cities as $city) {
    foreach ($shops as $shop) {
        Router::connect(/* your params */);
    }
}

但要小心,如果有这么多记录,只查询商店和城市的组合是否存在会更快,如果存在,则只创建一条路线。