1

我的 smarty 文件中有两个选项卡。在 tab1 我有一个下拉菜单,它包含城市列表。我有基于城市的模板列表,其中包含有关城市的详细信息。在第二个选项卡中,我应该根据下拉选择显示相关的城市模板。

例如:下拉:

<select name='city' id='city' class="medium" style="float:left" onchange="setCityTpl(this);">
<option value=''></option>
{html_options options=$city_filter selected=$city.name}
</select>

如果我在下拉菜单中选择 City 1

我应该将 smarty 包含文件中的 tpl 名称设置为 city1.tpl

<div id="tab2" class="tab-content" style="display: none; visibility: hidden; padding-top:0px">
{include file=city1.tpl}
</div>

如果我在下拉菜单中选择 City 2

我应该将 smarty 包含文件中的 tpl 名称设置为 city2.tpl

<div id="tab2" class="tab-content" style="display: none; visibility: hidden; padding-top:0px">
{include file=city2.tpl}
</div>
4

2 回答 2

2

您可以从 javascript 加载 url。所以我认为如果用户从 Dropdown1 中选择 City1,你的 JS 将加载 city1.tpl 而 City2 将加载 city2.tpl

或者您可以执行以下操作:js 脚本调用selected-city.php带有“city1”或“city2”的 POST/GET 值的 url ()。使用名为(取自 POST/GET)和您的 tpl的参数selected-city.php检索:selected-city.tplselected

<div id....>
{include file=${selected}.tpl}
</div ...>
于 2012-05-10T15:52:50.147 回答
1

smarty是一个基于php的模板引擎,这意味着它运行在服务器端,而javascript运行在客户端(用户的浏览器)。因此,在用户真正看到您的页面之前,smarty 模板已经完成处理并且所有包含都已经完成。

要实现您想要的,一种方法是包含所有文件并隐藏相应的 html 元素(例如 display:none )。然后,根据用户的选择,您将显示您想要的元素(您的案例中的第二个下拉菜单

于 2012-05-10T14:55:17.557 回答