我正在尝试使用glob函数自动加载所有css / js文件。这目前正在运行,但仅限于一页。如果我尝试在另一个页面上调用该函数,它确实包含它们,但如果我在浏览器中检查它们,则文件似乎是空的。 我几乎不知道在哪里寻找以及出了什么问题。
css加载功能:
public function loadCss(){
$folder = glob('/public/assets/css/*.{css}', GLOB_BRACE);
foreach ($folder as $filename) {
echo "<link rel='stylesheet' href='$filename'>\n";
}
}
的index.php:
require_once './app/core/autoload.php';
$al = new autoload();
$al->addDirectories(
array(
'app/core',
'app/mvc',
'app/router',
'app/lib',
'app/models',
));
$al->register();
try{
$mvc = new mvc\mvc();
$mvc->start();
echo $mvc->getView();
}catch(Exception $e){
echo '<B>Error message:</B> '.$e->getMessage();
}
?>
<head>
<?php
$bs = new \bootstrap\bootstrap();
$bs->loadCss();
$bs->loadJS();
?>
</head>
如果有更好的方法,我想知道它:P
答案 0 :(得分:0)
glob
函数返回没有路径的文件名。如果您的CSS文件存储在/assets/css
相对于文档根目录(例如http://localhost/assets/css/main.css
),那么只有当页面也位于同一目录中时,您的链接标记才会起作用(例如http://localhost/assets/css/test.php
)
尝试将绝对路径添加到href
元素的link
属性。
答案 1 :(得分:0)
这是我加载css和js文件的方式,唯一的要求是它们需要与php文件具有相同的名称。例如,my_script.php必须具有css / my_script.css和/或js / my_script.js
$script = $_SERVER['PHP_SELF']; // current script
$script = explode('/', $script); // convert url to array
$script = end($script); // grab the last element
$css = str_replace('php', 'css', $script);
$js = str_replace('php', 'js', $script);
if (file_exists("css/$css")) {
echo "<link rel='stylesheet' type='text/css' href='css/$css'>";
}
if (file_exists("js/$js")) {
echo "<script src='js/$js'></script>";
}