【问题标题】:Codeigniter: How can I create database driven URIs?Codeigniter:如何创建数据库驱动的 URI?
【发布时间】:2012-03-27 08:27:04
【问题描述】:

我的路线是语言驱动的,看起来像这样 mydomain.com/en

$route['default_controller'] = "home";
$route['404_override'] = '';
$route['(\w{2})/(.*)'] = '$2';
$route['(\w{2})'] = $route['default_controller'];  

但我希望在语言 mydomain.com/jp/the-slug-of-a-japanese-page

之后的 URI 中包含数据库内容

我有一个名为 posts 的表格,它包含几行内容,其中包含标题、slug 和准备好的语言,但我不完全了解如何编辑我的家庭控制器以检查 URI 是否出现来自数据库。

这是我的家庭控制器方法。

class Home extends CI_Controller {

  function __construct()
  {
    parent::__construct();
  }
     public function index($title = '') {
       if(strlen($url)) {
        /* get content by title from DB */
        $data['url'] = $url;
        $this->load->view('user_home', $data);
       }
     } 
 }

【问题讨论】:

    标签: mysql codeigniter codeigniter-2 codeigniter-routing


    【解决方案1】:

    不确定我是否完全理解你的问题,但我认为你想在你的数据库中搜索一个 uri,这很简单:

    function index()
    {
        $needle = $this->uri->segment(2);
        $this->db->where('slug', $needle);
        $this->db->from('table_name');
        if($this->db->count_all_results() > 0)
        { //here the uri exists in your database }
        else
        { //here don't }
    }
    

    ¿这可能是你需要的?

    (当然,代码应该在模型中,而不是在控制器中,以保持codeigniter的MVC)

    【讨论】:

      【解决方案2】:

      在控制器中可以这样写

      public function index($title = '') {
      
            if(strlen($url)) {
              /* get content by title from DB */
              /* load content view */
             }
         /* load index view */
      
      }
      

      路线

      $route['default_controller'] = "home";
      $route['404_override'] = '';
      $route['(\w{2})/(:any)'] = $route['default_controller'].'/index/$2';
      $route['(\w{2})'] = $route['default_controller'];
      

      【讨论】:

      • 谢谢,但它没有。 $url 未定义。此外,我不希望它路由到名为 /index/ 的文件夹
      • 它不是索引文件夹。它是控制器方法的名称
      猜你喜欢
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多