Drupal 7 में, हम पूर्व के लिए नाम का उपयोग करके शब्द लोड कर सकते हैं। taxonomy_get_term_by_name($name)
क्या Drupal 8 में दिए गए नाम के माध्यम से शब्द लोड करने का कोई तरीका है?
Drupal 7 में, हम पूर्व के लिए नाम का उपयोग करके शब्द लोड कर सकते हैं। taxonomy_get_term_by_name($name)
क्या Drupal 8 में दिए गए नाम के माध्यम से शब्द लोड करने का कोई तरीका है?
जवाबों:
यह कार्यक्षमता 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;
}
?>
आप स्निपेट कोड का उपयोग कर सकते हैं जैसे कि UnitTypeManager का उपयोग करके :
$term_name = 'Term Name';
$term = \Drupal::entityTypeManager()
->getStorage('taxonomy_term')
->loadByProperties(['name' => $term_name]);
जैसा कि कई मूल्यों को लौटाने वाले टैक्सोनॉमी कार्यों का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 के लिए कोड में परिवर्तित करना, इस मामले में, फ़ंक्शन नाम की जगह के लिए केवल मामला है।
Drupal 8 में टर्म नाम से सिंगल टर्म आईडी लोड करने के लिए -
$term = \Drupal::entityTypeManager() ->getStorage('taxonomy_term') ->loadByProperties(['name' => $term_name, 'vid' => 'job_category']); $term = reset($term); $term_id = $term->id();