资产应该放在代码点火器项目中的哪个位置?

Ric*_*haw 18 php codeigniter

我刚开始使用CodeIgniter,我不确定css,js和images之类的东西应该去哪里.在整个系统文件夹之外似乎没问题,但这意味着一切都是分开的.内部意味着文件路径更长,我担心它可能会搞砸了.这个问题的最佳做法是什么?

小智 15

我通常在根级别放置单独的文件夹,所以我最终得到一个像这样的目录结构:

/system
/css
/js
/img
Run Code Online (Sandbox Code Playgroud)

似乎对我有用 - 当您使用时site_url(url),它生成的URL来自根目录,因此您可以使用它site_url('css/file.css')来生成样式表的URL等.


Jor*_*eno 6

就个人而言,我将application目录从目录中删除system并使其成为兄弟system.然后我创建一个项目目录,在public_html (www)那里我移动index.php并存储我的公共资产.

让我们假设您正在处理的项目被调用projekt.在父目录中public_html (www)创建一个名为的目录CISYSTEM,并在该目录中从您正在使用的版本中创建一个目录202,210等等.

/CISYSTEM
    /202
    /210
    /another_CI_version
/projekt_application
    /models
    /views
    /controllers
    /private_assets
/public_html
    /projekt
        index.php
        .htaccess
        css
        img
        js
        lib
Run Code Online (Sandbox Code Playgroud)

这种目录结构的优点在于它增加了另一层安全性,使得升级/交换CI核心变得简单易行.此外,您不应该对核心进行更改 - 拥有存储核心的单个目录,并且让所有项目引用它会使事情变得干燥.

所有这些目录改组都需要你重新路由一些东西.幸运的是,CodeIgniter使它变得简单 - 所有更改都可以在index.php文件中进行.

打开index.php并重新路由几件事:

更改: $system_path = 'system';

至: $system_path = '../../CISYSTEM/210';

更改: $application_folder = 'application';

至: $application_folder = '../../projekt_application';


另外,我看到很多人都在谈论site_url()在其他答案中使用.我建议使用一种不那么冗长的方式site_url()...如果你使用HTML的<base>元素,你不必每次都调用它:

<base href="<?= site_url();?>">

只需在您的应用程序中包含它,您<head>就可以直接调用控制器......如:

<a href='controllername/functionname'>Some Action</a>

干杯