使用“content_for”有效地将内容传递到页面上。
我想知道的是,你怎么能创建一个页面 生命周期 </跨度> 那会在PHP中实现同样的效果吗?
所以,这是一个简单的例子 ……&LT;身体GT;&lt;?php包含$ file。‘。php’; ?&GT;&LT; /体&GT;…页脚的东西……
编辑:感谢您提供有关URL的提示 安全 </跨度> ,但我们假设我正在安全地收到用户请求:)
现在,让我们在标题say中说
include $_GET['p']
如果您需要简单的东西,可以将页眉和页脚放在单独的文件中,执行您的 test.php 这将设置变量,使用捕获其输出 输出缓冲 ,然后包括标题,输出中间部分并包括页脚。例:
test.php
<?php ob_start(); ?> <body> <?php include $filename.'.php'; ?> </body> <?php $content = ob_get_clean(); include 'header.php'; echo $content; include 'footer.php'; ?>
如果我理解正确(我没有广泛使用过RoR),您可以将数据放在变量或函数中。如果你的内容是变量,你的“test.php”可以简单地保存你所有的变量,你可以在索引文件的最开头加载它(同样的功能取决于你的需求有多复杂;如果你是做了很多额外的工作,你可能需要使用一个函数作为一个变量将无法正常工作)。
例如,你的test.php看起来像这样:
<?php $page_title = "Test Page"; $page_content = "Some sort of content"; // Or function page_content() { // Run some functions and print content at the end } ?>
然后,在index.php中
<?php include $_GET['p'].'.php'; ?> ...header stuff... <title><?php print $page_title; ?></title> <body> <?php print $page_content; ?> <!-- OR if function --> <?php page_content(); ?> </body> ...footer stuff...
这样一切都应该正确加载。您也可以拆分,但这会使您的结构复杂化(特别是如果不需要精心设计的框架,这将是不必要的)。
祝好运! 丹尼斯·M
你担心XSS吗?或者您要从查询字符串中过滤/列入“文件名”白名单?
我的回答是使用mod_rewrite - 如果你使用PHP,你可能会使用Apache!
您可以使用RewriteCond过滤掉文件,您的RewriteRule可以是:
RewriteRule /index.php?p=(.*)$ $ 1 [L,QSA]
这可能与您正在寻找的PHP功能不同,但我想到了......