如何创建一个主要的php文件,以便其他php文件可以填补空白?

时间:2015-08-25 19:34:48

标签: php html

我正忙着练习如何创建网站。现在我想以一种适合我的方式做到这一点。但目前我未能创建一个主页面,我以后可以填补空白。凭借标题很容易,我成功地在不同的页面上设置标题。但是当我尝试设置完整页面的内容时,我失败了。

这将是我填写空白的页面:

<!doctype html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <title><?php echo $title ?></title>
    <?php require 'navigation.php'; ?>
</head>
<body>
    <div class="content">
        <?php $content ?>
    </div>
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>
<?php require 'footer.php'; ?>
</html>

以下代码将是我的索引页面。如果我按照下面的方式设置我的内容就可以了,但是我不满足于这个解决方案,因为等号后面的部分会被视为一个字符串而且感觉不太整洁。

<?php $title = "Home";?>
<?php $content = "<div class='container bg-image'></div>" ?>


<?php require '..\resources\views\main.php';?>

所以我的问题是我能以更好的方式做到这一点吗?我该怎么做?

3 个答案:

答案 0 :(得分:0)

您应该使用<?php include 'nameOfFile.php'?>将php文件包含在另一个

答案 1 :(得分:0)

在学习如何编写PHP的这个阶段,我建议根据你在页面上的行踪来包含文件。

但在此之前,我想指出您没有回应代码中的内容。您编写了<?php $content; ?>,但应该为当前方法编写<?php echo $content; ?>

现在,回到我的建议:
我们有这个文件结构:

/content/home.php
/content/about.php
/includes/navigation.php
/index.php

content文件夹中的每个文件都可以包含原始HTML,您希望在此处显示<?php echo $content; ?>

好吧,让我们打开index.php

<?php
// Content of index.php
$defaultpage = 'home';

// We would like to display different pages based on the url
// Use the global get variable to figure out which page we want to display
$page = isset($_GET['page']) ? $_GET['page'] : $defaultpage;
// Here i used a short syntax for if and else. This code above is equal to:
//
// if (isset($_GET['page'])) {
//    $page = $_GET['page'];
// } else {
//    $page = $defaultpage;
// }

// Hardcoded list of available pages + the title each page should show
$pages = [
    'home' => [
        'title' => 'Welcome to my site',
        'file' => 'home.php'
    ],
    'about' => [
        'title' => 'About me',
        'file' => 'about.php'
    ]
];

// See if the requesed page is a available page by looking inside $pages
if (isset($pages[$page])) {
    $page = $pages[$page];
}
else {
    $page = $pages[$defaultpage];
}
// $page is now overwritten with an associative array containing
// both 'title' and 'file' for content.

// Let us prepare a variable containing the requested page.
$file = dirname(__FILE__)."/contents/".$page['file'].".php";

// If the file doesn't exist, stop execution with an error message
if (!file_exists($file)) {
    exit('<h1>Page not found');
}
?>
<!doctype html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <title><?php echo $page['title']; ?></title>
    <?php require 'navigation.php'; ?>
</head>
<body>
    ...
    <div id="content">
    <?php include($file); ?>
    </div>
    ...
</body>
</html>

我不确定你为什么在头标记中包含了导航文件,但我认为你只是放错地方了。

答案 2 :(得分:0)

这可以用来发现我猜...

    <?php
      include('test.php') //this is how you can add an external php 

      /*but its recommended to use require rather than include as it                                
      throws error to the browser which is really a serious threat*/

     require('test.php')

   ?>
  

一切顺利...... !!!