【问题标题】:Creating Dynamic Controllers in codeIgniter via CMS通过 CMS 在 codeIgniter 中创建动态控制器
【发布时间】:2012-08-02 20:14:29
【问题描述】:

我目前正在为 codeIgniter 中的项目构建 CMS,我想知道当用户在数据库中创建新页面时,是否有任何方法可以通过 CMS 在 codeIgniter 中动态创建控制器文件。我不需要创建另一个模型,因为数据库中的表和视图都是相同的。基本上,网站中的所有页面(链接、标题、内容等)都来自同一个表。我只想保持这样的uri(www.mywebsite.com/class/function)。也没有路由。

我在网上四处寻找,我发现唯一接近我的请求的是 CRUD“codegen”,但我不能在线使用它,而且有很多我不需要的东西。

【问题讨论】:

  • 为什么没有路由?如果我了解您要完成的工作,那么这是路由用途的完美示例。
  • URI 显示如我所愿,如果我能做我想做的事,我就不需要为每个页面创建新的路由。

标签: php mysql codeigniter


【解决方案1】:

虽然每次用户向数据库添加新页面时都可以创建一个新控制器,但使用一个以 db id 或页面名称作为参数并加载该页面的控制器不是更好吗?

因此,如果用户创建了两个页面,分别称为 page1 和 page2,并且您有一个控制器用于为所有名为 dynamic.php 的动态页面提供服务,那么 URL 将是

www.mysite.com/dynamic/page1
www.mysite.com/dynamic/page2

每次用户创建页面时创建一个控制器是一个很大的开销,并且还需要大量代码才能正确实现,例如当用户从数据库中删除页面时删除控制器。而且我认为在 SO 中提供编码解决方案会很麻烦。

【讨论】:

  • 我终于明白了,现在一切都应该简单多了。 class Test extends CI_Controller { function fr($url, $sub_url="") { $em = $this->doctrine->em; if(empty($sub_url)){ $query = $em->createQuery("SELECT page FROM models\Page page WHERE page.url = '".$url."'"); }else if(!empty($sub_url)){ $query = $em->createQuery("SELECT page FROM models\Page page WHERE page.url = '".$sub_url."'"); } $result = $query->getResult(); $data['pageContent'] = $result[0]; $this->load->view('index', $data); } }
  • 很高兴你明白了 :)
  • @Sébastien Morin Barsalou:我还需要网址为 www.mysite.com/dynamic/page1 或 page2。我有控制器动态。函数怎么写。 page1,页面将被更改。如何为所有page1、page2调用静态函数......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
相关资源
最近更新 更多