如何在 codeigniter 4 中加载 css 或 js 文件?

Posted

技术标签:

【中文标题】如何在 codeigniter 4 中加载 css 或 js 文件?【英文标题】:How can I load css or js file in codeigniter 4? 【发布时间】: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 【参考方案1】:

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

根据 codeIgniter 4 。

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

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

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

那么代码应该如下所示:

index.php

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

【讨论】:

如果你想保护你的源文件不被外部访问,你不应该把它们放在公共目录中。在此处查看详细信息:***.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[] 数组

以上是关于如何在 codeigniter 4 中加载 css 或 js 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Codeigniter 中加载图像?

无法在 codeigniter 中加载 Css

我的 CSS 页面未在 codeigniter 中加载

如何在每个页面中加载 CodeIgniter 助手?

CodeIgniter - 如何在项目中加载 stripe-php 库?

我如何在控制器函数中加载目录作为视图:Codeigniter