【问题标题】:I want to remove Controller and function name from URL in CodeIgniter我想从 CodeIgniter 中的 URL 中删除控制器和函数名称
【发布时间】:2018-07-03 09:57:56
【问题描述】:

我当前的网址是 http://myaliveidea.com/news/news/readmore/78/Hacker-drama-Mr.-Robot-is-granted-full-series-by-USA-Network

http://myaliveidea.com/news/ -> 这是基本网址。

news -> 是控制器名称

readmore -> 是函数名

78/Hacker-drama-Mr.-Robot-is-granted-full-series-by-USA-Network -> 我的博客 ID 和他的标题

所以我想从 url 中删除控制器和函数名称 像这样

http://myaliveidea.com/news/78/Hacker-drama-Mr.-Robot-is-granted-full-series-by-USA-Network

【问题讨论】:

标签: php codeigniter


【解决方案1】:

查看 Code igniter 用户指南中的路由文档。

【讨论】:

    【解决方案2】:

    如果您希望新闻控制器成为您的主控制器。你必须在你的路由中设置它,所以当你转到http://myaliveidea.com 时,它会转到新闻控制器,而不显示控制器名称。我会从您的基本网址中删除/news/,并将新闻设置为路由中的默认控制器。

    $route['default_controller'] = "news"; gets index from controller
    
    $route['default_controller'] = "news/readmore";
    

    这里也有很好的 CI 教程https://www.youtube.com/watch?v=9hRNFgSLLAQ

    【讨论】:

      【解决方案3】:

      您还可以在控制器中使用 _remap() 函数。这样,如果你有动态数据,你就不用担心更新你的 routes.php

      https://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping

      将以下代码(未完全测试)放入您的新闻控制器中。

      /**
       * Intercept all calls to this class. 
       * 
       * @access private
       * @param string
       * @param array
       * @return boolean
       */
      function _remap($method, $params)
      {
          // If method exists, call that method.
          if (method_exists($this, $method) !== false) return call_user_func_array(array($this, $method), $params);
      
          // Method is actually a news_id and 1st parameter is title
          $sql = 'SELECT news_id FROM news WHERE news_id = ? AND title = ?';
          $news_id = $method;
          $title = (isset($params[0])) ? $params[0] : '';
          $qobj = $this->db->query($sql, array($method, $title); 
      
          if ($qobj->num_rows()) {
              return $this->readmore($news_id, $title);
          }
      
          // Non-existing method
          show_404();
      }
      

      【讨论】:

        猜你喜欢
        • 2016-11-02
        • 2017-05-04
        • 2014-12-16
        • 2011-11-28
        • 1970-01-01
        • 2011-08-04
        • 2017-04-10
        • 2018-01-10
        • 2015-05-06
        相关资源
        最近更新 更多