【发布时间】:2016-11-04 19:13:23
【问题描述】:
我正在为我的一个项目使用 codeigniter 框架,但我有一个小问题我无法解决。我想将 css 样式和 js 脚本与视图分开,所以我将它们分别放在单独的文件夹中,/css 和 /js 都位于我项目根文件夹中的 assets 文件夹中。整体结构是这样的:
/项目文件夹
----/应用程序
----/系统
----/资产
--------/css
--------/js
----index.php
现在,我有一个名为 MyLibrary 的控制器,它有一个名为 newentry 的方法,当它被调用时会加载 newentry 视图。
<?php
class MyLibrary extends CI_Controller
{
public function newentry()
{
//The upload form
$this->load->view('newentry');
}
}
newentry 视图是一个简单的上传表单,它使用 style.css 和 script.js 进行样式设置和验证等...我正在使用 codeigniter 的 base_url() 方法来包含上述文件的路径和文件名.
<html>
<head>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>assets/css/style.css">
<title><?php echo $title; ?></title>
</head>
<body>
<form class = "dropezone" action = 'upload' method = 'POST' enctype = 'multipart/form-data'>
<input type="file" name="document" />
<input type="submit"/>
</form>
</body>
</html>
这一行是我有问题的地方: href="assets/css/style.css">
生成的字符串是正确的路径,意思是 localhost/project-name/assets/css/styles.css,但是,请求会发送到这个 url:
http://localhost/project-name/MyLibrary/localhost/test-pages/assets/css/style.css
当然,不是文件所在的位置。有谁知道为什么会这样?
另外,如何解决这个问题?我应该手动添加路线吗?如果是这样,如何制作一个提供静态文件的控制器?
【问题讨论】:
-
base_url是否设置在config.php中? -
是的,是这样设置的:$config['base_url'] = 'localhost/test-pages/';
-
尝试像这样将协议添加到 base_url:`$config['base_url'] = 'localhost/test-pages';`
-
$config['base_url']应由'http://localhost/test-pages/'分配。也需要协议方案。
标签: php css codeigniter