资产应该放在CodeIgniter项目中的哪个位置?

时间:2008-10-07 13:48:10

标签: php codeigniter

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

6 个答案:

答案 0 :(得分:15)

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

/system
/css
/js
/img

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

答案 1 :(得分:6)

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

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

/CISYSTEM
    /202
    /210
    /another_CI_version
/projekt_application
    /models
    /views
    /controllers
    /private_assets
/public_html
    /projekt
        index.php
        .htaccess
        css
        img
        js
        lib

这种目录结构的优点在于它增加了另一层安全性,使得升级/交换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>

干杯

答案 2 :(得分:1)

我讨厌在根级别拥有这么多目录,所以我使用/ public并使用htaccess重写/脚本到/ public / scripts等等。

答案 3 :(得分:1)

我发现最好将资产保持在根级别。您可以使用<?=base_url()?>来回显站点的完整根。在配置文件中,您可以设置网站的根目录。这句话恰好说明了这一点。

因此,您可以使用这样的包含:

<link href="<?=base_url()?>/css/style.css" rel="stylesheet" type="text/css" />

代码中的任何位置,它仍会获得http://example.com/css/style.css

答案 4 :(得分:1)

BASE_URL()/ CSS / name.css

答案 5 :(得分:1)

为了以这种方式使用site_url(url)帮助器,你必须首先配置Apache mod_rewrite(或等效的)来从URI中删除index.php段。

否则,site_url方法会将index.php添加到URL中,如果你已经将它们放在如上所述的基本目录中,它可能会搞砸你的资产的路径。

以下是有关从URI中删除index.php的CodeIgniter文档:

http://codeigniter.com/wiki/mod_rewrite/