【问题标题】:How can I load css or js file in codeigniter 4?如何在 codeigniter 4 中加载 css 或 js 文件?
【发布时间】:2020-02-11 23:10:18
【问题描述】:

当我尝试加载 css 或 javascript 文件时,它会返回 404 错误。

我尝试过使用 HTML helper 的 link_tag、URL helper 的 base_url 方法等帮助器,它会创建到文件的路由,但无法加载。

这是我的控制器:

class Pages extends Controller{

    public function viewPage($page)
    {
        if(!is_file(APPPATH."/views/pages/$page.php")){
            throw new \CodeIgniter\Exceptions\PageNotFoundException($page);
        }

        helper('html');

        $data['title'] = $page == 'noticeboard' ? "page1" : "page2";

        if($page != "index"){
            echo view('templates/header', $data);
        }

        echo view("pages/$page", $data);

        if($page != "index"){
            echo view("templates/footer", $data);
        }
    }

}

我的路由器:

$routes->get("/", "Pages::viewPage/index");

HTML 中的标题:

<?=link_tag('public/css/style.css')?>

assets 文件夹位于 htdocs 的根目录(我使用的是 xampp apache 服务器)。

当我尝试加载 CSS 或 JS 时,我收到此错误:

我是 CodeIgniter 的新手,因此我们将不胜感激。

  • 目录结构:
文档 -民众 --CSS ---style.css --JS ---app.js -应用程序 --控制器 ---页面.php --views ---页面 ----index.php

* 我已将我的 CSS、JS 文件路由从资产更改为公共 *

【问题讨论】:

  • 请告诉我们您的文件夹结构,只有我们才能告诉您准确的解决方案
  • @bhuvneshpattnaik 添加了目录结构。
  • 应用程序文件夹呢?
  • @bhuvneshpattnaik 添加。自 CodeIgniter 4 以来,应用程序文件夹已将名称更改为“app”。
  • 尝试将&lt;?=link_tag('public/css/style.css')?&gt;行中的public/css/style.css替换为/css/style.css

标签: php codeigniter codeigniter-4


【解决方案1】:

由于 app 是公用文件夹的同级文件夹,

根据 codeIgniter 4 。

您放入公用文件夹的任何内容都可以直接访问。

所以应该像下面这样将 css 应用于视图。

在views文件夹中假设有一个文件为index.php

那么代码应该如下所示:

index.php

    <link rel="shortcut icon" type="image/png" href="/css/style.css"/>

【讨论】:

  • 如果你想保护你的源文件不被外部访问,你不应该把它们放在公共目录中。在此处查看详细信息:stackoverflow.com/questions/19820314/…
  • @bhuvnesh pattnaik 我也有同样的问题。显然我尝试创建与 app 文件夹相同级别的 assets 文件夹,并尝试将 css 文件放在 public 文件夹中,它仍然显示 file not found 错误。
【解决方案2】:

试试这个

$config['base_url'] = "http://ur_site_url.com/";

比你认为的

<?php echo base_url('assets/css/style.css'); ?>

【讨论】:

  • “在那之后”是什么意思?
  • 我的意思是配置你的设置,然后在主视图中使用base_url()
  • 此答案适用于 CodeIgniter 3 而不是 CodeIgniter 4,因为 CI4 不再使用配置数组。
【解决方案3】:

转到 config/App.php 并更改此变量

public $baseURL = 'http://yoursite';

然后你可以访问它

<?php echo base_url();?>

【讨论】:

    【解决方案4】:

    您还可以使用 html 帮助程序并使用 link_tag 添加样式表 根据您的设置,如果您在 url 中隐藏 public 文件夹,则必须将 public 添加到 url。

    <?php echo link_tag('public/css/style.css'); ?>
    

    【讨论】:

      【解决方案5】:

      您是否在 application/config/config.php 文件中添加了 base_url? 这里:http://prntscr.com/pji8a5

      您提供的站点 URL 未定义。

      你已经给了http://localhost:8080/css.....

      但应该是http://localhost:8080/SITE_URL/css.....

      如果你加$config['base_url'] = "http://site_url.com/";那么你可以直接给base_url('assets/css/style.css');

      <link rel="stylesheet" href="<?php echo base_url('assets/css/style.css'); ?>">
      <script src="<?php echo base_url('assets/js/js.css'); ?>"></script>
      

      谢谢

      【讨论】:

      • 我已经将base_url改成了这样:public $baseURL = 'http://localhost';(我觉得不一样,因为这是codeigniter 4。我根本没有应用程序文件夹),但错误没有修复。跨度>
      • 您的项目文件夹名称是什么?你应该给$baseURL = 'http://localhost/project_name';@YJM
      • 那是 CI3 而不是 CI4。 CI4 不再像那样使用 $config[] 数组
      猜你喜欢
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2012-08-20
      相关资源
      最近更新 更多