在CakePHP的Router文件中获取Controller名称和SQL查询?

时间:2011-01-24 22:21:15

标签: php mysql cakephp cakephp-1.3

可以在CakePHP的路由器文件中执行sql查询吗?查询必须选择有关控制器名称的数据。

有可能实现吗?

更新:我需要的是使用不同的路由关于网址。 url和route之间的关系将在数据库中定义。

tnx in adv!

2 个答案:

答案 0 :(得分:2)

是的,您可以从路由器文件访问数据库,并根据需要动态设置路由器。 为此,您必须在路由器文件中编写此代码:

    App::import('Model', 'ModelName');
    $ModelName = new ModelName();

此处ModelName是您要从中提取数据的模型的名称。 所以现在你有了模型的对象,现在你可以通过调用模型函数来获取数据并定义路由器。对于我的情况,我使用了这段代码

    $data = $ModelName ->find('all'); 
    if(!empty ($data)){
        //pr($events);
        foreach ($data as $item) {
            if($item['ModelName']['field_name']!=""){
                Router::connect("/{$item['ModelName']['field_name']}", array('controller' => 'registrations', 'action' => 'index', $item['ModelName']['anyvalue']));
            }
        }
    }

因此,您可以根据需要定义路由器。如果您仍有问题,请与我联系..

由于 Behestee

答案 1 :(得分:1)

可以在控制器中重定向,但它会产生开销,控制器背后的想法不是路由。否则路由类不存在。

实际上它是Router类的扩展,因此具有继承路由器类的connect函数的新类是最佳解决方案。

可以通过查找数据库中的URL来进行路由。只需创建一个包含url,controller,action和param的表。查找当前URL(Router :: normalize($ dispatcher-> getUrl());)然后连接Router :: connect(“数据库结果”)

此致 Wouter de Boer。