【问题标题】:CodeIgniter Routes: do I need to make an entry for each individual page?CodeIgniter Routes:我需要为每个单独的页面创建一个条目吗?
【发布时间】:2013-10-17 00:04:30
【问题描述】:

在我的 CodeIgniter 安装中,我的路由文件当前是:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//routes
$route['about']              = 'page/view/about';
$route['(:any)']             = 'page/view/$1';
$route['default_controller'] = "page/view";

我的问题是 - 我是否需要在每次有新页面时拨打新的$route 电话,还是有办法自动拨打电话?我的page 控制器将用于我的静态页面...homeaboutcontactfaq、等等

我需要指定每个静态页面吗?

这也可能源于我进入代码的注册部分。如何自动为用户提供自己的路线?

谢谢

【问题讨论】:

  • 仔细阅读manual,尤其是“示例”部分。也就是说,CodeIgniter 是我见过的所有 php 框架中最弱的路由系统之一。
  • 不要偏离主题,但我缺少的另一件事是“Twig”模板引擎具有模板继承。你推荐一个替代框架吗?
  • 有.. emm .. 杂交 CodeIgniter 和 Twig 的库:edmundask.github.io/codeigniter-twiggy,但由于我没有使用其中任何一个,我没有进一步的见解。
  • 好的,谢谢。但是,如果您在我深入研究之前推荐任何比这更好的框架,请将它们扔掉。 :D
  • 如果“答案”可以放在评论中,则不值得发布。至于 MVC,我建议你尝试通过 this list 的材料。实际上第一个与 MCV 相关的链接是“GUI Architectures”,但您需要了解上面的内容才能理解它。

标签: php codeigniter codeigniter-routing


【解决方案1】:

避免为每个页面手动设置路由的一种方法是创建一个页面控制器并将所有 uri 路由到该控制器。

Routes.php:

// Default controller
$route['default_controller'] = "page/index";

// Page controller catch all
$route['(:any)'] = 'page/view/$1';

routes.php 文件的顺序很重要,它们应该是文件的最后两行。如果您有其他控制器(即 News/Blog/Products/Whatever),它们的路由应该在这两个路由之上。

页面.php

class Page extends CI_Controller {

    public function __construct()
    {
        parent::__construct();      
    }

    public function index()
    {
         // This will be where your load your top page (homepage)
    }

    public function view($uri)
    {       
         // This will be where you load all other content pages (about/info/contact/etc)
         echo $uri;
    }   
}

显然这是非常基本的,但它让您了解如何实现 Pages 的自动路由。知道 uri 后,您可以使用它从 csv/database/textfile 中提取有关该页面的信息,然后为该 uri 加载适当的视图。

【讨论】:

  • 谢谢!这就是我一直在寻找的。​​span>
猜你喜欢
  • 2013-07-01
  • 2016-02-10
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2013-11-12
  • 1970-01-01
相关资源
最近更新 更多