नाम से लोड शब्द


21

Drupal 7 में, हम पूर्व के लिए नाम का उपयोग करके शब्द लोड कर सकते हैं। taxonomy_get_term_by_name($name)

क्या Drupal 8 में दिए गए नाम के माध्यम से शब्द लोड करने का कोई तरीका है?

जवाबों:


19

यह कार्यक्षमता Drupal 8 में पदावनत प्रतीत होती है । इसके बजाय taxonomy_term_load_multiple_by_name फ़ंक्शन का
उपयोग करें ।

उदाहरण

<?php

  /**
   * Utility: find term by name and vid.
   * @param null $name
   *  Term name
   * @param null $vid
   *  Term vid
   * @return int
   *  Term id or 0 if none.
   */
  protected function getTidByName($name = NULL, $vid = NULL) {
    $properties = [];
    if (!empty($name)) {
      $properties['name'] = $name;
    }
    if (!empty($vid)) {
      $properties['vid'] = $vid;
    }
    $terms = \Drupal::entityManager()->getStorage('taxonomy_term')->loadByProperties($properties);
    $term = reset($terms);

    return !empty($term) ? $term->id() : 0;
  }

?>

लिंक की गई ब्लॉग पोस्ट अब लोड नहीं लगती है। यह एक है कि यह पता लगाने की कोशिश कर दूसरों के लिए उपयोगी हो सकता है पाया। btmash.com/article/2016-04-26/…
gcalex5

34

आप स्निपेट कोड का उपयोग कर सकते हैं जैसे कि UnitTypeManager का उपयोग करके :

$term_name = 'Term Name';
$term = \Drupal::entityTypeManager()
      ->getStorage('taxonomy_term')
      ->loadByProperties(['name' => $term_name]);

2

जैसा कि कई मूल्यों को लौटाने वाले टैक्सोनॉमी कार्यों काtaxonomy_get_term_by_name($name, $vocabulary = NULL) नाम बदला गया है , का नाम बदल दिया गया है taxonomy_term_load_multiple_by_name($name, $vocabulary = NULL)। यदि आप पहले फ़ंक्शन के कोड को देखते हैं और आप इसे दूसरे फ़ंक्शन के कोड के साथ तुलना करते हैं, तो आप देखेंगे कि कॉल के taxonomy_term_load_multiple(array(), $conditions)साथ कॉल करने के लिए सबसे अधिक प्रासंगिक अंतर कॉल की जगह ले रहा है entity_load_multiple_by_properties('taxonomy_term', $values)

// Drupal 7
function taxonomy_get_term_by_name($name, $vocabulary = NULL) {
  $conditions = array('name' => trim($name));
  if (isset($vocabulary)) {
    $vocabularies = taxonomy_vocabulary_get_names();
    if (isset($vocabularies[$vocabulary])) {
      $conditions['vid'] = $vocabularies[$vocabulary]->vid;
    }
    else {
      // Return an empty array when filtering by a non-existing vocabulary.
      return array();
    }
  }
  return taxonomy_term_load_multiple(array(), $conditions);
}
// Drupal 8
function taxonomy_term_load_multiple_by_name($name, $vocabulary = NULL) {
  $values = array('name' => trim($name));
  if (isset($vocabulary)) {
    $vocabularies = taxonomy_vocabulary_get_names();
    if (isset($vocabularies[$vocabulary])) {
      $values['vid'] = $vocabulary;
    }
    else {
      // Return an empty array when filtering by a non-existing vocabulary.
      return array();
    }
  }
  return entity_load_multiple_by_properties('taxonomy_term', $values);
}

चूंकि taxonomy_term_load_multiple_by_name()पदावनत के रूप में चिह्नित नहीं किया गया है, आप अभी भी उस फ़ंक्शन का उपयोग कर सकते हैं जहां आप उपयोग करते थे taxonomy_get_term_by_name()। इन दोनों को समान तर्क की आवश्यकता होती है, इसलिए Drupal 7 के लिए कोड को Drupal 8 के लिए कोड में परिवर्तित करना, इस मामले में, फ़ंक्शन नाम की जगह के लिए केवल मामला है।


0

आप शब्द पर फ़ील्ड द्वारा लोड करने के लिए इकाई फ़ील्ड क्वेरी का उपयोग भी कर सकते हैं

$result = \Drupal::entityQuery('taxonomy_term')
          ->condition('field_my_field_name', 'Whatever Value')
          ->execute();

0

Drupal 8 में टर्म नाम से सिंगल टर्म आईडी लोड करने के लिए -

$term = \Drupal::entityTypeManager() ->getStorage('taxonomy_term') ->loadByProperties(['name' => $term_name, 'vid' => 'job_category']); $term = reset($term); $term_id = $term->id();

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.