【问题标题】:Remove controller's name from url. Codeigniter从 url 中删除控制器的名称。代码点火器
【发布时间】:2019-03-22 18:41:15
【问题描述】:

谁能帮我解决这个问题。我想像这样从 url 中删除控制器名称

www.site-name.com/controller_name/controller_functions/controller_arguments

到这里

www.site-name.com/controller_arguments

例如:

www.site-name.com/blog/display/blog-title

到这里:

www.site-name.com/blog-title

下面是我的控制器类

 class Blog extends CI_Controller {

       public function index() {

         $data['blogs_data'] = $this->Blog_model->get_blogs();

         $data['main_view'] = "blog/blog_layout";

         $this->load->view('layouts/main', $data);
      }

       public function blog_display($page_url) {
        $data['blog_data'] = $this->Blog_model->get_blog($page_url);

        $data['main_view'] = "blog/blog_detail_layout";

        $this->load->view('layouts/main', $data);
       }
 }

正如您从我的控制器中看到的那样,我的网站显示博客的 URL 将像这样 www.website-name.com/blog/blog_display/($page_url)

谢谢

【问题讨论】:

标签: codeigniter


【解决方案1】:

转到application->config->routes.php

然后您可以将“blog/display/blog-title”的路由设置为“blog-title”

将以下行添加到您的 routes.php 文件中

$route['blog-title'] = 'blog/display/blog-title';

然后您可以将“blog/display/blog-title”替换为“blog-title”。

【讨论】:

  • 该方法的问题是博客标题是动态的,我有不止1个博客。
  • $route[''] = 'blog/display';我不确定这一点,但可以这样检查。
【解决方案2】:

在 routes.php 文件中定义路由。

route['controller_arguments']='controller_name/controller_functions';

您在哪个 onclick 上显示此 url.define 那里。

<a href="<?php echo base_url(); ?>controller_arguments">
                            </a>

【讨论】:

  • 所以在 route.php 中我可以这样做 $route['$page_url'] = 'blog/blog_display';你知道 $page_url 是动态的吗?
【解决方案3】:

我想你的 slug 是生成的,所以你不能把所有的 slug 都写到你的路线中。

在您的特定情况下,您的路线中需要这样的东西:

$route['(:any)] = 'blog/display/$1';

请记住,您的路线是从上到下使用的。因此,如果您将这条路线作为您的第一个路线,那么您网站的其余部分可能无法正常工作。

因此,如果是整个博客结构,您可能需要以下内容:

$route[''] = 'blog/index'; // For first page without pagination
$route['(:num)] = 'blog/index/$1'; // Blog article pagination (for second page and all other pages)
$route['(:any)] = 'blog/display/$1'; // Blog article detail

为避免将来路由只是 (:any) 参数时出现一些问题,您可能希望在该博客详细文章中添加一个额外的段。

像这样:

$route['detail/(:any)] = 'blog/display/$1'; // Blog article detail

有关此主题的更多信息,请快速查看此处的文档:Codeigniter routing system

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 2013-02-27
    • 1970-01-01
    • 2013-08-15
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多