0

使用 MVC 我有一个模型目录,里面有两个文件;menu.xml 和以下 model.php。

<?php
$xml = simplexml_load_file('menu.xml');
print_r ($xml);
?>

在我的视图目录中,我有一个 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命令不起作用呢?

任何提示表示赞赏!

谢谢

4

1 回答 1

1
$xml = simplexml_load_file('menu.xml');

此路径相对于当前执行的脚本。这就是为什么它在您model/model.php直接访问时有效,但在从./index.php. 改用绝对路径:

$xml = simplexml_load_file(__DIR__ . '/menu.xml');

IMSoP编辑

对于早于 5.3的 PHP 版本:

$xml = simplexml_load_file(dirname(__FILE__) . '/menu.xml');
于 2013-10-30T21:29:44.727 回答