微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么浏览器为何显示404视图而不是在此Codeigniter 3应用程序中加载样式表? 我如何使用主题视图问题

如何解决为什么浏览器为何显示404视图而不是在此Codeigniter 3应用程序中加载样式表? 我如何使用主题视图问题

我正在使用 CodeIgniter 3.1.8 和Bootstrap 4构建CMS。我决定为其添加主题。该应用程序不是HMVC ,只有MVC。

themes 目录位于 application 之外,如下图所示:

enter image description here

主题内部,我有一个主题目录(当然),其中包含“主视图”,layout.PHP

enter image description here

我如何使用主题视图

application/core中,我添加一个包含以下内容MY_Loader.PHP文件

<?PHP defined('BASEPATH') OR exit('No direct script access allowed');

  class MY_Loader extends CI_Loader {

    function theme_view($folder,$view,$vars = array(),$return = FALSE) {
      $this->_ci_view_paths = array_merge($this->_ci_view_paths,array(FCPATH . $folder . '/' => TRUE));
      return $this->_ci_load(array(
              '_ci_view' => $view,'_ci_vars' => $this->_ci_prepare_view_vars($vars),'_ci_return' => $return
          ));
    }

}

在我的Posts控制器的index()方法中,我加载了传递数据的视图:

public function index() {
   //more code here
   $data['posts'] = $this->Posts_model->get_posts($config['limit'],$config['offset']);
    $this->load->theme_view('/themes/caminar/','layout',$data);
}

问题

layout.PHP中,我包括主题的样式表:

<link rel="stylesheet" href="<?PHP echo site_url('themes/caminar/assets/css/main.css')?>">

文件main.css确实位于http://example.com/themes/caminar/assets/css/main.css处,但由于浏览器要加载CSS文件,因此会加载404视图。

我在做什么错了?

解决方法

加载资产时,您使用的是site_url而不是base_url。

站点URL用于应用程序上的链接,通常是控制器功能。

base_url用于资产。

因此将您的路径更改为:

<link rel="stylesheet" href="<?php echo base_url('themes/caminar/assets/css/main.css')?>">

如果这不能解决问题,则您的服务器中可能有某些东西可以阻止该问题。在这种情况下,如果您使用的是apache,请向我们显示您的.htaccess;如果您使用的是nginx,请向您显示该虚拟主机的配置。

如果是Apache,则可以尝试将其添加到您的.htaccess中。

RewriteCond $1 !^(index\.php|assets|themes|images|js|css|uploads|favicon.png)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。