gpt4 book ai didi

PHP MYSQL TWIG 下拉菜单创建

转载 作者:行者123 更新时间:2023-11-29 01:40:44 25 4
gpt4 key购买 nike

我是 twig 的新手,但对 php 和 mysql 有一定的了解。我想做的应该很简单,但我想不通。

我正在尝试使用 php 和 twig 作为模板引擎简单地创建一个 mysql 驱动的下拉菜单。

我有单独的 PHP 和 twig 模板文件,我无法解决的是它们应该如何组合在一起。 PHP 目前做了所有聪明的事情,并在页面底部回显 $template->render(array (...etc )。

有人可以提供一个示例,说明如何在 html 中使用 php、mysql 和 twig 渲染形成一个简单的下拉菜单吗?

谢谢

编辑->好的,我有:

// get list of years we have data for
$stmt = getvisithistoryyear($db);
$years = $stmt->fetchAll();


echo "<select name=\"pcid\">";
echo "<option size =30 ></option>";
foreach ($years as $year){
echo "<option value='".$year['year']."'>".$year['year']."</option>";
}
echo "</select>";

在我的显示下拉菜单的 php 文件中,但它不是我单独的 twig 模板的一部分。我不知道该怎么做是在 Twig 模板中显示它,抱歉含糊不清,但我不知道该怎么做,所以很难解释!

上面的函数只返回一个年份列表,即 2013、2012、2011,我想在下拉列表中显示这些年份,以允许用户选择他们想要选择的年份。

在我目前的模板中:

<table class="flexitable">
{% for y in years %}
<tr>
<td><a href="visitarchive.php?year={{y.year}}">{{y.year|escape}}</a></td>
</tr>
{% endfor %}
</table>

其中显示了一长串年份,我只想将其格式化为下拉列表

设置我使用的 Twig 模板: //包含并注册 Twig 自动加载器 包括'../Twig/Autoloader.php'; Twig_Autoloader::register();

// define template directory location
$loader = new Twig_Loader_Filesystem('../templates');

// initialize Twig environment
$twig = new Twig_Environment($loader);

// load template
$template = $twig->loadTemplate('dashboard/visitarchive.tmpl');

为了渲染 Twig ,我在底部的 php 中调用了以下代码

// set template variables
// render template
echo $template->render(array (
'pageTitle' => 'Visit Archive',
'etc' => 'etc'));

最佳答案

我为 twig 中的数据绑定(bind)表单控件制作了一些有用的宏。

您可以将它们放入 html 或 twig 文件中。

我把它们放在一个名为“forms_helpers.html”的文件中(如果你这样做,你需要将评论更改为 html 评论)。

//accepts options as a simple list or range.
/*
name: control name
id: control id
bound_value: the currently selected value
opt: a range of values e.g. 1..6

*/

{% macro simpleDropdown(name, id, bound_value, opt) %}
<select class="form-control" id="{{id}}" name="{{name}}">
{% for a in opt %}
<option {% if (a == bound_value) %} selected {% endif %} value="{{a}}">{{a}}</option>
{% endfor %}
</select>
{% endmacro %}

//accepts options as an associative array.
/*
name: control name
id: control id
bound_value: the currently selected value
options_array: the associative array that provides the options. e.g. a list of inventory items from a database
text_field: the field name in the collection that will provide the option text
value_field: the field name in the collection that will provide the option value
*/
{% macro arrayDropDown(name, id, bound_value, options_array, text_field, value_field) %}
<select class="form-control" id="{{id}}" name="{{name}}">
<option value="0">[SELECT]</option>
{% for a in options_array %}
<option {% if (a[value_field] == bound_value) %} selected {% endif %} value="{{a[value_field]}}">{{a[text_field]}}</option>
{% endfor %}
</select>
{% endmacro %}

宏的使用方法如下:

{% import "forms_helper.html" as forms %}
<div>
{{ forms.simpleDropdown("myControlName","myControlId", currentlySelectedValue, 0..10)}}
</div>

如果有人感兴趣,我还有其他几个,但这两个应该可以处理大多数下拉菜单。

关于PHP MYSQL TWIG 下拉菜单创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com