displaying multiple templates in a single php Smarty file(在单个php Smarty文件中显示多个模板)
本文介绍了在单个php Smarty文件中显示多个模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好堆栈溢出社区!
我还没能找到这个问题的答案。我有一个联系人.php文件,如下所示:
<?php
require_once('lib/smarty/smarty/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->caching = false;
$smarty->debugging = false;
$smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].'/templates/';
$smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].'/cache/smarty/templates_c';
$smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].'/cache/smarty/cache';
$smarty->display('contact.tpl');
die;
在我的联系人.tpl文件中,我有我的表单:
{extends file="index.tpl"}
{block name="content"}
my form....
{/block}
我通过名为index.tpl:
的主文件包含名为Content的块<!DOCTYPE html>
<main>
...
{block name="content"}{/block}
</main>
问题: 一切都正常,然而,在这种情况下,我将不得不创建大量的php文件(如contact.php),这些文件显示正确的模板。我如何使用单个php文件,并让它根据用户点击的页面链接显示正确的模板?例如,当用户点击联系人页面时,我希望它显示Conact.tpl,当用户点击‘About’页面时,我希望它显示About.tpl,而不是每个案例都有单独的php文件。
推荐答案
您可以使用URL参数,例如index.php?pag=Contact,index.php?pag=Home
然后在index.php中只需使用开关
switch ($_GET['pag'])
{
case 'contact':
$template="contact.tpl";
//you can also declare some variables for one particular view to use them in the template
$data=array('my_mail'=>'test@test.com');
break;
case 'home':
$template="home.tpl";
break;
default:
$template="error404.tpl";
break;
}
$smarty->assign(array('data'=>$data,'something_else'=>$more_data));
$smarty->display($template);
您可以使用htaccess隐藏url中的参数,因此,mydomain.com/index.php?pag=Contact很容易变成myDomain.com/Contact
这篇关于在单个php Smarty文件中显示多个模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在单个php Smarty文件中显示多个模板
基础教程推荐
猜你喜欢
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01