2014-05-23 73 views
2

我是新來的樹枝,但對php和mysql有一個公正的理解。我想要做的事情應該很簡單,但我無法弄清楚。PHP MYSQL TWIG下拉菜單創建

我想簡單地創建一個MySQL驅動的下拉菜單使用PHP和樹枝爲模板引擎。

我有單獨的PHP &樹枝模板文件和我不能工作了是應該的一切結合在一起。 PHP目前完成所有的巧妙的東西和回聲$ template->渲染(數組(...等)在頁面底部

請有人提供了一個如何使用PHP形成一個簡單的下拉菜單的例子?,mysql和樹枝轉換爲HTML

謝謝

編輯 - > 好了,所以我有:

// 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文件

,但不是我的一部分單獨的樹枝模板,我不知道該怎麼做將它顯示在樹枝模板中,抱歉模糊不清,但我不知道該怎麼做,這使得很難解釋!

上述函數只是返回年份列表即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/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'); 

呈現樹枝我把從我的PHP下面的底部

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

請將您試過的代碼編輯到您的問題中。如果我們能看到你做了什麼,對我們來說更容易! – Edward

+0

你在項目中做過任何模板渲染嗎?可以提供一些你已經完成的工作嗎?否則,該鏈接可能會幫助您如何使用樹枝模板創建不同的頁面http://devzone.zend.com/1886/creating-web-page-templates-with-php-and-twig-part-1/ – Javad

+0

我已完成大量的模板渲染,但只是無法弄清楚如何格式化使用PHP和樹枝下拉菜單。我不知道如果部分應該在Php或樹枝模板或如果它在PHP如何將它呈現給樹枝模板 – user3670221

回答

0

這是你需要在你的PHP文件,該文件顯示頁面

// fetch all data you need before rendering the template 
$stmt = getvisithistoryyear($db); 
$years = $stmt->fetchAll(); 

// 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'); 

// as you see I pass the $years to template below 
echo $template->render(array (
    'pageTitle' => 'Visit Archive', 
    'years' => $years 
    'etc' => 'etc' 
)); 

做什麼現在你可以改變你的模板

<table class="flexitable"> 
    <tr> 
     <td>Years: </td> 
     <td><select name="pcid"> 
     {% for y in years %} 
     <option value="{{ y['year'] }}">{{ y['year'] }}</option> 
     {% endfor %} 
     </select></td> 
{% for y in years %} 
</table> 

希望這有助於

+0

@ user3670221根據你在源代碼中提供的內容我只是將它們混合在一起,向你展示如何使用樹枝創建你的表單 – Javad

+0

感謝這有助於很多,幾乎在那裏。 getvisithistoryyear返回一個數組,但是模板顯示一個空的下拉列表並且不顯示年份。我的數組顯示:Array([0] => Array([year] => 2013)[1] => Array([year] => 2012)[2] => Array([year] => 2011)[3 ] => Array([year] => 2010)[4] => Array([year] => 2009)[5] => Array([year] => 2008) => 2007))我應該在部分放置什麼?把年份放在''似乎並不起作用 – user3670221

+0

我不知道我最後的變化怎麼沒有提交;它應該是'';我更新了我的答案;基於您提供的陣列應該可以工作 – Javad

4

我做了一些有用的宏綁定表單控件在樹枝數據。

你可以把它們放到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> 

我有幾個人如果有人有興趣,但是這兩個應該處理大部分的下拉列表中。

+0

這是一個非常優秀的答案,我希望看到你創建的其他幫助者。 看起來像樹枝應該有這樣的助手回購,但他們似乎並不太在乎非symfony的實現。 – Frug