标头已发送,php mvc

这不起作用有两个原因是因为当您使用“/”包含其他 PHP 文件时将引用 index.php 的“/”因此在所有包含中您必须将“/”更改为 __DIR__


以及 index.php 中的这个使用include ('/app/app.php');将无法找到正确的当前目录,因此对于您的特定情况,将代码更改为:


索引.php:


<?php 

include ('.\app\app.php');

?>

应用程序.php:


<?php

include(__DIR__.'\template\template.php');

?>

模板\模板.php :


<?php


// Load our Head

include (__DIR__.'\parts\head.php');


// Load our Header

include (__DIR__.'\parts\header.php');


// Load our Body

include (__DIR__.'\parts\body.php');


// Load our Footer

include (__DIR__.'\parts\footer.php');


?>


明月笑刀无情
浏览 92回答 2
2回答

ibeautiful

虽然您的示例不是 100% 清楚,但当初学者在调用之前尝试输出页面的一部分时,这个错误最常发生在初学者身上header()。一旦您echo输出了任何内容,就会发送标头,因此您需要确保任何调用都header()发生在任何页面生成代码之前,无论是对标记外的 HTML 调用echo还是简单的 HTML调用<?php ?>。这里的一个常见问题是无意中包含了一些空格,通常是<?php在文件顶部的之前,或者在结束之后?>。当您使用 MVC 方法时,好的做法是只有您的模板/视图文件应该包含 HTML,并且任何 PHP 脚本的第一个字符应该是<?php,并且您不应该?>在文件末尾关闭以确保任何尾随空格不会包含在您的页面视图中。

跃然一笑

好的,我发现了问题。我的路由器是为文章页面编写的:else if (strpos($frontend->url, 'article.php'))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $frontend->article();&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Si l'utilisateur poste un commentaire sur un article&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (isset($_GET['action']) && $_GET['action'] == 'addComment')&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $frontend->addComment($_GET['id'], $_POST['author'], $_POST['comment']);&nbsp; &nbsp; &nbsp; &nbsp; }它加载了我的文章页面,然后,如果提交了评论,它会在重定向处调用我的控制器函数 AddComment。我在加载文章页面之前放置了 If 语句,它工作正常!感谢您的宝贵时间,也感谢让我按铃的 deceze。希望它可以帮助别人,我没有找到很多 MVC 结构的例子。
打开App,查看更多内容
随时随地看视频慕课网APP