0

我开始研究CodeIgniter,在深入研究之前,我正在考虑和分析一些场景。

其中之一是关于 assets (css/js/img) 文件夹:谷歌搜索,主要趋势是将 assets 文件夹放在根目录下,与 /system 和 /application 处于同一级别;考虑到我可以拥有多个应用程序(如此处所述:http: //ellislab.com/codeigniter/user-guide/general/managing_apps.html),每个应用程序都有自己的资产文件夹,这是最合乎逻辑的解决方案我是将 /assets 文件夹放入 /application 文件夹 - 这似乎也更“便携”

好的,现在的问题是:如何将资产文件引用到我的视图中?如果 /assets 文件夹位于根目录中,我会阅读我可以参考的内容,即。.css 文件是这样的:<?=base_url()?>/assets/css/style.css 但是如果 /assets 文件夹在 /application 中,因为我不能使用<?=base_url()?>/application/assets/css/style.css怎么办?

提前致谢!

@Brendan:嗨,Brendan,感谢您的评论;我将从拥有多个应用程序(/application1、/application2 等)的问题开始更好地解释“可移植性”,这是我回答的出发点;如果我只有一个应用程序也没问题,但我'我在预想拥有不止一个的场景)

将 /assets 文件夹与 index.php 放在同一级别意味着我最终可能会拥有许多子文件夹,就像我的应用程序一样,例如 /assets/application1、/assets/application2 等。

如果我必须将 applicationX 文件夹移动到其他计算机,我应该记得移动相应的 /assets/applicationX 文件夹;如果我曾经将 /applicationX 重命名为 /newnameX,我应该记得将 /assets/applicationX 也重命名为 /assets/newnameX,以免弄得一团糟

拥有 /assets INTO /application 让我摆脱了所有这些问题,这是我的想法;助手的想法很好,正如我刚刚找到的这篇文章所说,这似乎完全解决了我要问的问题:http: //heybigname.com/2009/11/23/managing-assets-with-codeigniter /

4

3 回答 3

1

定义“便携”。

如果您的 CodeIgniter 应用程序设置正确——即:

  • systemapplicationweb 根目录下的文件夹
  • $config['base_url']是正确的(包括协议在内的完整域,即http://www.example.com

然后您应该将您的assets文件夹放在与前端控制器 ( ) 相同的目录中index.php。这种配置与文件夹assets内部一样“便携”(我认为它更是如此) 。application如果您的应用程序目录位于 Web 根目录之下(确实应该如此),那么如果没有“代理”脚本为您加载文件,您将无法从该文件夹加载资产。充其量这将意味着更多的 php 负载,在最坏的情况下(在实施不佳的情况下)存在安全风险。

简而言之:assets真的不属于application. 然而,PHP/CI 的美妙之处在于,如果您愿意,您仍然可以这样做(但application必须高于 Web 根目录)。

此外,您可以将文件路径传递给base_url()函数,如下所示:

<?php echo base_url('assets/css/style.css'); // output: http://www.example.com/assets/css/style.css ?>
于 2013-01-18T16:57:34.983 回答
1

我知道这是一个老问题,但我前段时间写了一篇文章,针对这个问题提出了一些观点。我喜欢 Ruby on Rails 布置 Assets 文件夹的方式,并且我创建了一个模仿此的设置。

在这里查看我的博客:http: //www.stefandunn.co.uk/blog/custom-codeigniter-helpers-stolen-from-ruby-on-rails/

这是我说的最后一点。

有了这个,您可以使用简单的 php 代码引用您的资产文件:

javascript_tag('main.js');
image_tag('logo.png', array('class'=>'logo', 'id'=> 'logo'));
stylesheet_tag('main.css');
于 2013-09-19T09:46:51.100 回答
0

在 codeigniter 中设置资产的最佳实践如下:

  • 应用
  • 资产
  • 系统

但你想要:

  • 应用程序 > 资产 > css > style.css
  • 系统

但是如果你想将 assets 文件夹保留在应用程序中,那么你必须做一些额外的功能,如下所示:首先,确保你已经在你的控制器中加载了 URL 帮助程序:

$this->load->helper("url");

您必须首先使用以下代码在“application/helpers”目录中创建一个名为“my_helper.php”的助手:

if ( ! function_exists('asset_url()'))
{
  function asset_url() {

    return base_url().'application/assets/';

  }
}

现在,您必须将此助手加载到您的控制器中,如下所示:

$this->load->helper("my_helper");

现在用以下代码替换“application/”目录中的 .htaccess 代码:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|assets|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

完成上述所有功能后,您必须在视图中声明您的资产,如下所示:

<link rel="stylesheet" href="<?php echo asset_url(); ?>css/style.css">
于 2020-01-29T07:22:17.817 回答