使用MVC我有一个模型目录,里面有两个文件; menu.xml和以下model.php。
<?php
$xml = simplexml_load_file('menu.xml');
print_r ($xml);
?>
在我的views目录中,我有一个index.php文件,如下所示:
<?php
include '../model/model.php';
print_r($xml);
foreach ($xml->children() as $option)
{
?>
<li><a href='<?= $option->getName() ?>'><?= $option['name'] ?></li>
<?php
}
?>
</ul>
在另一个目录中 - 这次是html - 我有以下内容:
<!-- This is the controller -->
<?php
require_once('../includes/helpers.php');
// determine which page to render
if (isset($_GET['page']))
$page = $_GET['page'];
else
$page = 'index';
// show page
switch ($page)
{
case 'index';
render('templates/header', array('title' => 'Main Menu'));
render('index');
render('templates/footer');
break;
}
?>
这应该显示menu.xml文件的子项列表。如果我直接访问model.php:
<pre>
<?php
$xml = simplexml_load_file('menu.xml');
print_r ($xml);
?>
</pre>
我可以看到$ xml对象的内容。
那么为什么include '../model/model.php
命令不起作用?
任何提示赞赏!
由于
答案 0 :(得分:1)
$xml = simplexml_load_file('menu.xml');
此路径与当前执行的脚本相关。这就是为什么它直接访问model/model.php
时有效,而不是从./index.php
包含它时。请改用绝对路径:
$xml = simplexml_load_file(__DIR__ . '/menu.xml');
按IMSoP编辑:
对于PHP版本older than 5.3:
$xml = simplexml_load_file(dirname(__FILE__) . '/menu.xml');