我认为这应该有一个非常简单的解释,但我仍在学习 Fat-Free Framework(F3):如何仅渲染一次页眉和页脚并切换所选路线的内容代码?
$f3->route('GET /',
function($f3) {
$f3->set('content','views/welcome.htm');
$f3->set('page_head', 'Welcome');
}
);
如果我添加这一行:
echo View::instance()->render('layouts/header+footer.htm');
在路由中的f3->set
调用之后或在 index.php 文件末尾的$f3->run();
之后,整个页面在路由更改时刷新。我不能在路由代码之前调用上面的echo
行,而不会在内容框中抛出错误。
有什么方法可以禁用页面刷新吗?它被刷新是因为我的链接被浏览器解释为单独的页面吗?谢谢任何帮助!
你的问题有点模糊。但我会尽量用我理解的方式回答。首先你的index.php
$f3->route('GET /',
function($f3) {
$f3->set('content','views/welcome.htm');
$f3->set('page_head', 'Welcome');
echo Template::instance()->render('layouts/header+footer.htm');
}
);
$f3->run();
In yourheader+footer.htm
<!DOCTYPE html>
<html>
<head lang="en">
<meta cht="UTF-8">
<title>{{@page_head}}</title>
</head>
<body>
<include href="{{@content}}"/>
</body>
</html>
您的views/welcome.htm
可以包含任何内容。
<h1>Welcome</h1>
<p>You have arrived to the welcome page</p>
请记住文件夹views
和layouts
应该在UI
文件夹中
$f3->set('UI','ui/');
关于您的评论:您可以从$f3->get('PARAMS')
访问请求的参数,也可以这样做。
$f3->route('GET /@page',
function($f3,$params) {
$page = $params['page'];
$f3->set('content','views/'. $page .'.htm');
$f3->set('page_head', 'Welcome');
echo Template::instance()->render('layouts/header+footer.htm');
}
);
这应该有效
如果您希望只更新网页的一部分,而不进行完全刷新,则需要使用 AJAX。
首先阅读:https://fatfreeframework.com/3.6/routing-engine#AJAXandSynchronousRequests
你需要在前端使用 javascript 来完成这项工作。如果你不知道如何在 javascript 中编码,那么你可以从阅读开始:
https://www.w3schools.com/js/js_ajax_intro.asp您可能会发现使用 Jquery 更容易,这是一个非常受欢迎的 javascript 库。
https://www.w3schools.com/jquery/jquery_ref_ajax.asp也许创建自己的 View 实例并使用类似于 PHPTal Filters 的功能扩展 main 也不错。然后你可以在 preFilter 中设置 Header,在 postFilter 中设置 Footer,并扩展 render () 函数。扩展的 render () 将为您一起呈现所有内容,包括页眉,页脚和正文内容。
我个人没有任何反对 FatFree 视图,但会建议 PHPTal 作为模板引擎-这里只是实现https://github.com/creoLIFE/FatFree-PHPTAL,包括从单独的文件提供的 Header / Footer。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(16条)