【问题标题】:How to create array of all the language in drupal form dropdown list如何在drupal表单下拉列表中创建所有语言的数组
【发布时间】:2014-03-27 06:20:10
【问题描述】:

我需要在我的 Drupal 表单中为所有语言创建下拉列表,PHP 中是否有任何函数可以实现这一点。我想创建一个包含所有语言的数组并将其传递给 drupal 形式。

function video_upload_subtitles_form($form, &$form_state) {
 $form = array('#attributes' => array('enctype' => 'multipart/form-data'));
 $lang_list = array();//**how to create this array**
 $form['video_name'] = array(
    '#title' => t('Name Of the video'),
    '#type' => 'textfield',
 );

 $form['sub_file'] = array(
        '#type' => 'file',
        '#title' => t('Upload video'),
        '#description' => t('Pick a video file to upload.'),
    );
$form['user_list']=array(
    '#type'=>'select',
    '#title' => t('Language'),
    '#options' => $lang_list,//array of language
    '#multiple' => false,
    '#attributes'=>array('size'=>4),
    '#weight'=>8,
);
 $form['submit_button'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
 );

 return $form;

}

我知道语言列表可以在 php 中通过手动列出和创建数组来完成,但是否可以使用任何 php 函数,只是寻找一些简单的方法来节省时间。

Country List 找到了这个很酷的网站。有这样的语言吗

【问题讨论】:

  • 尝试更改,我希望这很有用
  • @Mehul:谢谢!!!我会试试这个新代码:)

标签: php arrays drupal drupal-7 lang


【解决方案1】:

试试这个,

    $select = db_select('Your table name', 's');
    $select = $select->fields('s',array('languages_name','id'));
    // 'languages_name' , 'id' this is a column
    $queried_nodes = $select->execute()
    ->fetchAllAssoc('id');
    $lang_list = array();
    foreach ($queried_nodes as $result)
    {   
       $lang_list[$result->languages_name] = t($result->languages_name);
    }

设置 $lang_list 变量后

$form['user_list']=array(
     '#type'=>'select',
     '#title' => t('Language'),
     '#options' => $lang_list,//array of language
     '#multiple' => false,
     '#attributes'=>array('size'=>4),
     '#weight'=>8,
);

您正在创建一个新的语言表或内容类型,并且您使用的是 drupal 内置语言列表,因此请尝试此代码。

  include_once DRUPAL_ROOT . '/includes/iso.inc';
  $lang = _locale_get_predefined_list();

  $lang_list = array();

  foreach ($lang as $key => $value) 
  {
    $lang_list[$value[0]] = t($value[0]);
  }

在表单 api 中使用 $lang_list 变量后

【讨论】:

  • 我需要知道从哪里获取语言列表
【解决方案2】:

最简单的方法可能是将您想要的所有语言放在数据库中的一个表中。

然后你可以使用下面的代码来创建你的选择框:

$languages = db_query("SELECT id, name FROM languages")->fetchAllKeyed();

$form['language'] = array(
    '#type' => 'select',
    '#title' => t('Choose language'),
    '#options' => $languages,
);

要填充您的语言表,您可以下载csv here

【讨论】:

  • 您能否更正您的 csv 并再次上传,它似乎有点不正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 2020-09-07
  • 2018-06-17
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多