【问题标题】:Get Controller name and SQL query in CakePHP's Router file?在 CakePHP 的路由器文件中获取控制器名称和 SQL 查询?
【发布时间】:2011-01-24 22:21:15
【问题描述】:

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

有可能实现吗?

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

tnx in adv!

【问题讨论】:

  • 你做错了什么。路线并不意味着做这么多工作。您需要重新考虑您的方法并将该逻辑移动到控制器中。
  • 是的。管理员可以删除此消息。

标签: php mysql cakephp cakephp-1.3


【解决方案1】:

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

    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']));
            }
        }
    }

因此,您可以按照自己的要求定义路由器。如果还有问题,请联系我..

谢谢 贝赫斯蒂

【讨论】:

    【解决方案2】:

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

    其实它是Router类的一个扩展,所以一个新的类,你的connect函数继承Router类是最好的解决方案。

    可以通过在数据库中查找 url 来进行路由。只需用 url、控制器、动作和参数制作一个表格。查找当前 url ( Router::normalize($dispatcher->getUrl()); ) 然后与 Router::connect( "results from the database" ) 进行连接

    问候, 沃特·德波尔。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2018-12-24
      • 2013-05-19
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      相关资源
      最近更新 更多