我希望使用位于名为/ template的文件夹中的标题(包括css,js和图像)和页脚文件。然后,这些文件将包含在目录中的每个文件中,例如:
/template/header.php + footer.php
/home/index.php
/products/products.php
/products/hardware/types/hardware.php
/css
/js
/images
当我使用时:
include (__DIR__ . "/../template/header.php");
包含该文件(虽然我需要更改每个文件和广告更多&#34; /../"我走的目录越远)但所有css,js和图像都被破坏了。< / p>
这是我的标题(位于header.php中,其中一个包含的文件):
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="icon" type="image/gif" href="images/favicon.ico">
<link rel="stylesheet" type="text/css" href="../css/layout.css"/>
<link rel="stylesheet" type="text/css" href="../css/slider.css"/>
<link rel='stylesheet' type='text/css' href='../css/menus.css'/>
<link rel='stylesheet' type='text/css' href='../css/forms.css'/>
<link rel="stylesheet" href="css/jquery-ui.css" type="text/css" media="all"/>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/jquery.elastic.source.js"></script>
<script type="text/javascript" src="../js/control.js"></script>
<title>APEC Energy - <?php echo($PageTitle);?> </title>
</head>
我现在正在尝试使用配置文件(很难开始工作但仍然不适合我)。
config.php(放在根文件夹中):
<?php
$paths = array(
"root" => "./",
"controller" => "controller",
"stylesheets" => "css",
"images" => array(...),
"javascript" => array(...),
);
$projectName = "/";
function fInc($filePath){
global $projectName;
return '//'.$_SERVER['HTTP_HOST'].'/'.$projectName.'/'.$filePath;
}
?>
并在每个.php文件中使用:
调用包含文件im<?php
$rootDir = $_SERVER['DOCUMENT_ROOT']."/".(explode ('/', $_SERVER['PHP_SELF'])[1]);
require_once($paths['helper']['html']."template/header.php");
?>
当我使用var_dump($ paths)时,它打印出&#34; NULL&#34;
但现在只是一个空白的屏幕?
答案 0 :(得分:0)
在标题中,您的所有网址都是相对的。对我来说,即使输出文件始终位于同一文件夹中,当将其包含在不同文件夹中的PHP文件中时,这通常会导致意外行为。为了避免相对URL的问题,我总是使用绝对URL,无论我正在引用什么或我在做什么。
要获取项目的根URL,我使用以下代码:
rtrim('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'], substr(strrchr($_SERVER['PHP_SELF'], '/'), 1))
设置文件看起来像这样:
<?php
namespace Mynamespace;
class Settings
{
/**
* Main settings for the system.
*
* All system-wide non-specific settings goes here.
*
* @param string $setting Name of the setting you want to return.
* @return string Returns the specified setting value or, if this fails, false.
*/
public static function main($requested)
{
$settings = array(
'base_url' => rtrim('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'], substr(strrchr($_SERVER['PHP_SELF'], '/'), 1)),
'site_title' => 'My Awesome Site',
'debug_on' => true,
'some_other_setting' => 'some value',
);
}
}
要使用设置,我会包含该文件并使用静态调用来获取我的设置。像这样:
Settings::main('base_url')
结果是提供给浏览器的脚本的根文件夹。我始终确保在我的根文件夹中使用index.php
作为单个入口点,因此我始终确保代码返回根文件夹。从那里开始,只需添加资源所需的任何路径即可。