【问题标题】:Route or base_url is not working properly in CodeIgniterRoute 或 base_url 在 CodeIgniter 中无法正常工作
【发布时间】:2018-06-30 03:52:53
【问题描述】:

我目前正在开发我的个人博客,但我的路线有问题。假设我有一个名为

的控制器

博客

<?php 

class Blog extends CI_Controller {
    public function index(){
        $data['posts'] = $this->BlogModel->get_post();

        $this->load->view('frontend/header');
        $this->load->view('frontend/navbar');
        $this->load->view('frontend/BlogContent',$data);
        $this->load->view('frontend/footer');
    }

    public function view($slug = NULL){
        $data['post'] = $this->BlogModel->get_post($slug);

        if(empty($data['post'])){
            show_404();
        }

        $data['title'] = $data['post']['title'];

        $this->load->view('frontend/header');
        $this->load->view('frontend/navbar');
        $this->load->view('frontend/blog/view',$data);
        $this->load->view('frontend/footer');
    }
}
?>

我的路线是这样的:

$route['blog/(:any)'] = 'blog/view/$1';
$route['default_controller'] = 'home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

然后我尝试访问这部分 http://localhost/cathode/blog/post-one 工作正常

但在访问这些部分后尝试访问导航栏菜单时,我的 base_url 包含在“博客”控制器中。

blog

所以当我尝试访问“home”菜单时,路由将指向http://localhost/cathode/blog/home,而实际上我的base_url 是http://localhost/cathode/,我该如何解决这个问题?

谢谢

【问题讨论】:

  • 请分享您的$config['base_url']$config['uri_protocol']$config['index_page'] 价值观
  • $config['base_url'] = 'localhost/cathode'; $config['uri_protocol'] = 'REQUEST_URI'; $config['index_page'] = '';这个对吗? @DaniyalNasir
  • 我可以看到带有附加 base_url 的导航栏的 html。
  • @DaniyalNasir
  • 您的 Blog 是您的控制器名称,因此应该是 &lt;a class="nav-link" href="&lt;?php base_url('Blog/home');?&gt;home"&gt;HOME &lt;span class="sr-only"&gt;(current)&lt;/span&gt;&lt;/a&gt;
  • 标签: php codeigniter


    【解决方案1】:

    根据给定的信息,几乎没有假设,我认为您的导航栏如下:

    <a href="home">Home</a>
    

    然而,您必须像这样添加 base_url()

    <a href="<?= base_url('home'); ?>">Home</a>
    

    如果你有什么问题,请告诉我。

    更新

    来自提供的 HTML 代码:

    <li class="nav-item "> 
        <a class="nav-link" href="<?php base_url();?>home">
        HOME <span class="sr-only">(current)</span>
        </a> 
    </li> 
    <li class="nav-item"> 
        <a class="nav-link" href="<?php base_url();?>about">ABOUT</a> 
    </li>
    

    替换&lt;?php base_url(); ?&gt;

    &lt;?php echo base_url();?&gt; &lt;?= base_url();?&gt;

    【讨论】:

    • 很高兴为您提供帮助 :)
    【解决方案2】:

    尝试在base_url() 之前添加一个echo,如下所示:

    ...
    <li class="nav-item "> <a class="nav-link" href="<?php echo base_url(); ?>home">HOME <span class="sr-only">(current)</span></a> </li>
    <li class="nav-item"> <a class="nav-link" href="<?php echo base_url(); ?>about">ABOUT</a> </li>
    ...
    

    【讨论】:

    • 嗨@Hasta 非常感谢,这个也解决了我的问题:)
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签