所以我有这个PHP网站,我正在使用模板 . 任何页面都分为三个部分:页眉,内容和页脚 . 每个部分都由 .php
文件表示 .
Headers :
<html>
<head><link_to_some_css /></head>
<body>
<div id="menuBar">
xxx
</div>
内容:
<?php include("header.php") ?>
<div id="someHTMLContent">xxx</div>
<!--
How do I link an external CSS stylesheet from within here?
-->
<?php include("footer.php") ?>
页脚:
</body></html>
<link>
标签应该位于 <head>
内,但是在 content.php
内我无法访问html的头部 .
很抱歉,如果有人问这个问题,但我对在MVC架构中实现无框架PHP项目有点新意见(因此尝试将CSS JavaScript PHP文件分开以获得更好的结构)
4 回答
创建一个存储CSS链接的css_main.php文件 .
例子是......
之后,只需要在您的内容.php文件中要求“css_main.php”
您可以在 Headers 中或内容中包含链接 . 如果你在 Headers 中有它,它会在你包含 Headers 时加载 . 否则只需将链接放在内容中即可 .
如果你想要 Headers 中包含的内容,那么在包含之前将其设为全局变量 .
在header.php中:
您可以通过定义函数来添加更强大的解决方案,以便在给定链接的情况下创建CSS标记,然后将它们添加到全局$标头字符串中 . 这些将需要包含在标头包含之前包含的
core.php
文件中 .简单的答案是 - 没办法 .
它应该做的方式是,有一个对象,它代表所有样式表,在页面创建时初始化,然后添加样式表,然后才显示页面 . 它应该看起来像这样:
控制器:
在内部,
render()
函数将获取样式表,并将它们传递给视图 .视图:
但是,这样做需要每个视图都是某种视图类的实例 . 或者在数组中传递一些数组 . 这是你的选择 .
这来自MVC的想法本身,一个视图应该什么都不做,而不是显示给它的内容 . 因此,它不应该考虑,要加载哪个样式表,或使用哪个模板/布局 . 如果特定的模板/布局已经有一些样式表 - 很好,但是应该在控制器中定义其他的模板/布局,然后传递给视图 .
希望这可以帮助 .
Edit 当我坐着思考时,我想你可能会达到这个目的 . 我的意思是,我没有测试它,我不知道它是否会按预期工作 .
您可以尝试创建一个简单的javascript,在页面加载时将获取所有
<link>
标记并将它们放在 Headers 中 .然而,这是一种非常黑客的方式,除非你绝望,否则不应该使用它 .