drupal - 将选择/选项列表添加到表格
问题描述:
我有点困惑。我用一个文本框和一个提交按钮创建了一个简单的表单。现在我想使用taxonomy_get_vocabularies()函数添加分类术语的选择/选项下拉框。drupal - 将选择/选项列表添加到表格
$vocabularies = taxonomy_get_vocabularies('my_type');
我的问题是如何获得词汇表列表到“Drupal方式”。 Drupal定义窗体的方式看起来很僵硬。还有,如果存在相关的分类术语,我怎么能做出这种情况呢?
function my_form_name($form_state) {
// A Short question.
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Question'),
'#default_value' => $node->title,
'#required' => TRUE,
'#weight' => 1,
'#description' => t('A text box goes here '),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('submit'),
'#weight' => 7,
);
return $form;
答
我做一个自定义窗体类似的东西,并发现它更容易使用taxonomy_get_tree,与词汇代码作为函数的参数。请看下图:
//get the list of locations from taxonomy to use in the dropdown
$dropdown_source = taxonomy_get_tree(2);
$dropdown_array = array('0' => '--none--');
foreach ($dropdown_source as $item) {
$key = $item->tid;
$value = $item->name;
$dropdown_array[$key] = $value;
}
//location filter dropdown
$form['filterset']['locationfilter'] = array(
'#weight' => '1',
'#key_type' => 'associative',
'#multiple_toggle' => '1',
'#type' => 'select',
'#options' => $dropdown_array,
'#title' => 'Filter by location',
);
unset($dropdown_array);
答
研究如何做,在分类模块的taxonomy.admin.inc文件
/**
* Form builder to list and manage vocabularies.
*
* @ingroup forms
* @see taxonomy_overview_vocabularies_submit()
* @see theme_taxonomy_overview_vocabularies()
*/
function taxonomy_overview_vocabularies() {
$vocabularies = taxonomy_get_vocabularies();
$form = array('#tree' => TRUE);
foreach ($vocabularies as $vocabulary) {
...
答
感谢您的及时回复!我想我是这样做的。
$form['limiter'] = array(
'#type' => 'select',
'#title' => t('Choose a value'),
'#id' => 'limiter',
'#options' => get_faq_terms(),
);
function get_faq_terms() {
// get the vid value from vocabulary_node_types file
$result = db_query("SELECT * FROM vocabulary_node_types WHERE type = 'my_type' ");
$node = db_fetch_object($result) ;
$vid = $node->vid ;
// get corresponding term names from term_data file
$items = array();
$terms = taxonomy_get_tree($vid);
foreach ($terms as $term) {
$count = taxonomy_term_count_nodes($term->tid);
if ($count) {
$items[$term->tid] = $term->name;
}
}
答
我已经为我的模块写了这个帮助函数(drupal 7):
/**
* helper function to get taxonomy term options for select widget
* @arguments string $machine_name: taxonomy machine name
* @return array of select options for form
*/
function MYMODULE_get_tax_term_options($machine_name){
$options = array('0' => '');
$vid = taxonomy_vocabulary_machine_name_load($machine_name)->vid;
$options_source = taxonomy_get_tree($vid);
foreach($options_source as $item) {
$key = $item->tid;
$value = $item->name;
$options[$key] = $value;
}
return $options;
}
然后你就可以在你的$形式呼吁您#options此功能:
$form['field_name'] = array(
'#options' => MYMODULE_get_tax_term_options('taxonomy_machine_name'),
);
答
这里是如何做到这一点在Drupal 7
// Populate FAPI select box from vocabulary term values.
// In this case term_reference field is field_category
$form = array();
$form['category_default'] = array(
'#type' => 'select',
'#title' => t('Default category'),
'#options' => taxonomy_allowed_values(field_info_field('field_category')),
'#description' => t('The selected category will be shown by default on listing pages.')
);
return $form;
您应该使用意见回复的帖子,不进行其他职位你自己。 – jergason 2010-03-12 21:30:09
对不起,我认为我的评论对于“评论”格式有点冗长。顺便说一句,如果任何人有更好的解决方案,请让我们知道。另外 taxonomy_get_vocabularies()的一个例子会很有用。 – 2010-03-13 19:44:13