Как программно отобразить метку списка выбора вместо значения?
Я создал список выбора в следующем формате
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". Как я могу это сделать?
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));
}
Я думаю, вам следует использовать 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