Как программно отобразить метку списка выбора вместо значения?


Я создал список выбора в следующем формате

Gender
1|Male
2|Female

Я хочу отобразить следующую информацию в таблице, но я получаю "1" для мужчин и "2" для женщин.

Вот мой код:

function display_results_submissions(){
$results = db_query("SELECT * FROM {users}");
$header = array( t('Name'), t('Mail'), t('Gender'),);

foreach($results as $result){
        $rows[] = array(

            $result->name,
            $result->mail,
            $result->gender,

            );
    }

    return theme('table', array('header' => $header, 'rows'=>$rows));
}

Я хочу отобразить мужчину или женщину вместо "1" и "2". Как я могу это сделать?

Author: Pierre.Vriens, 2016-06-16

2 answers

При сохранении пола значение, хранящееся в базе данных, является ключом, а не значением. Следовательно, в вашей базе данных содержалось 1/2, а не Мужчина/Женщина. Итак, ваш запрос был правильным, и вам нужно было только отформатировать ключ перед сохранением в rows[].

function display_results_submissions(){
  $results = db_query("SELECT * FROM {users}");
  $header = array(t('Name'), t('Mail'), t('Gender'));
  foreach($results as $result){
    $gender = $result->gender == '1' ? t('Male') : t('Female');
    $rows[] = array(
      $result->name,
      $result->mail,
      $gender,
    );
  }

  return theme('table', array('header' => $header, 'rows' => $rows));
}
 2
Author: Vishal Kumar, 2016-06-19 22:41:16

Я думаю, вам следует использовать entity_metadata_wrapper, потому что при изменении метки выбора вам не нужно менять свой код.

Следующие строки сделают то, что вы хотите:

$wrapper = entity_metadata_wrapper('user', $result->uid);
$gender = $wrapper->field_user_gender->label();

Таким образом, ваш код будет выглядеть следующим образом:

function display_results_submissions(){
  $results = db_query("SELECT * FROM {users}");
  $header = array(t('Name'), t('Mail'), t('Gender'));
  foreach($results as $result){
    $wrapper = entity_metadata_wrapper('user', $result->uid);
    $gender = $wrapper->field_user_gender->label();
    $rows[] = array(
      $result->name,
      $result->mail,
      $gender,
    );
  }

  return theme('table', array('header' => $header, 'rows' => $rows));
}

Есть хороший пост в блоге по адресу http://www.mediacurrent.com/blog/entity-metadata-wrapper

 3
Author: Irmela, 2016-06-28 07:24:49