Ничего не возвращено из функции загрузки терминов таксономии


--очень обычный -- taxonomy_term_load(), похоже, не может загружать объекты в обратном вызове пользовательского меню. Тем не менее, я могу получить доступ к сущности профиля, загрузить поля и получить идентификаторы полей, но я ничего не получаю от функции загрузки таксономии!

function mymodule_menu() {
  $items = array();
  $items['user/account-convert'] = array(
    'title' => 'My Page',
    'page callback' => 'mymodule_page',
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}

function mymodule_page() {
  global $user;
  $profile = profile2_load_by_user($user, 'my_profile_type');
  // Sanity check tid return. Success.
  echo $profile->field_profile_myfield[LANGUAGE_NONE][0]['tid'];
  // Term name returns nothing. The object just won't load.
  echo taxonomy_term_load($profile->field_profile_myfield[LANGUAGE_NONE][0]['tid'])->name;
}

В этом нет абсолютно никакого смысла.

Я даже проверил здравомыслие, выводя жестко закодированные tid, такие как echo taxonomy_term_load(1708), после 100% подтверждения того, что это допустимое значение tid.

Кроме того, я проследил за деревом функций и пробовал звонить taxonomy_term_load_multiple напрямую и entity_load напрямую. Все это ничего мне не дает.

Кроме того, я могу подтвердить, что функция действительна и доступна на данный момент с помощью function_exists и отсутствия неопределенных ошибок функции.

Author: doublejosh, 2012-05-16

2 answers

Вероятно, это проблема доступа к таксономии .

См. taxonomy_access_query_term_access_alter().

(Для остальной части Интернета я знаю, что это проблема, потому что мы с Джошем работаем над одной и той же кодовой базой, и я столкнулся с точно такой же проблемой в совершенно другом контексте.)

 3
Author: Eric, 2012-05-28 00:36:05

Попробуйте вот это:

function get_tag_name($tid) {
    $query = db_select('taxonomy_term_data', 't');
    $query
            ->condition('t.tid', $tid, '=')
            ->fields('t', array('tid', 'name'));
    $result = $query->execute();

    foreach ($result as $row) {
        return $row->name;
    }
}
 -2
Author: MilanG, 2012-06-25 13:19:58