如何从多个目录中包含

时间:2014-05-28 16:17:00

标签: php css include subdirectory

我的header.php文件包含我项目的.css。我创建了一个新页面,其中有几个目录。(root / mods / people / employees / addemployee.php)

如果我把文件放在root中,css工作正常。如果我把它放在我想要的地方,那么css就不会出现了。

有解决方法吗?我试图保持井井有条。

添加员工代码:

<?php include("../../../includes/layouts/header.php"); ?>


<div id="main">
    <div id="subnavigation">
        <?php
            include('../../../mods/main_menu/index.html');
        ?>

    </div>

  <div id="page">


            <p>Add Employee!</p>




</div>
  </div>
</div>

<?php include("../../../includes/layouts/footer.php"); ?>

Header.php代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
    <head>
        <title>Company H&S Site </title>
        <link href="stylesheets/public.css" media="all" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="header">


      <h1>H&S Site </h1>


    </div>

1 个答案:

答案 0 :(得分:1)

问题是导致../../../相对路径调用的头痛问题。相反,我建议你设置一个默认的基本路径,再也不用担心这样的事情了:

<?php
$BASE_PATH = '/the/path/to/the/codebase/';
include_once($BASE_PATH . "includes/layouts/header.php");
?>

<div id="main">
    <div id="subnavigation">
        <?php
            include_once($BASE_PATH . "mods/main_menu/index.html");
        ?>

    </div>

  <div id="page">


            <p>Add Employee!</p>
</div>
  </div>
</div>

<?php include_once($BASE_PATH . "includes/layouts/footer.php"); ?>

如果您不知道文件的基本路径,请将此行放在PHP代码的顶部:

echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />";

然后加载该页面。靠近顶部的某处应该是一行:

  

您的路径是:/ / path / to / the / codebase /

当然/the/path/to/the/codebase/将是您的实际文件路径,但这将是您的基本路径。然后只需将$BASE_PATH设置为该值。

通过使用$BASE_PATH设置硬编码的基本路径,您始终可以知道代码的位置和位置。可以轻松地将您的页面放在目录结构中的任何位置。

我还建议使用include_once而不是include来避免脚本可能无意中尝试多次加载同一文件的情况。

include_once($BASE_PATH . "includes/layouts/header.php");