प्रोग्रामेटिक रूप से एक नोड को अपडेट करना


19

मैं निम्नलिखित कोड का उपयोग करके एक नोड बना सकता हूं:

$node = \Drupal::entityTypeManager()->getStorage('node')->create($array);

लेकिन अगर मेरे पास नोड आईडी है, तो मैं नोड कैसे संपादित कर सकता हूं ?


आप क्या संपादित करना चाहते हैं? कौन सा क्षेत्र?
युसेफ

जवाबों:


23

आप इस कोड को आज़मा सकते हैं

<?php
use Drupal\node\Entity\Node;

$node = Node::load($nid);
//set value for field
$node->body->value = 'body';
$node->body->format = 'full_html';
//field tag
$node->field_tags = [1];
//field image
$field_image = array(
    'target_id' => $fileID,
    'alt' => "My 'alt'",
    'title' => "My 'title'",
);
$node->field_image = $field_image;

//save to update node
$node->save();

यह उत्तर अच्छा तरीका नहीं है, इवान जवाब अच्छा जवाब है
केविन

6
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);

और उदाहरण के लिए कस्टम क्षेत्र के लिए संशोधित: es। field_mycustomfield ???
बीओईएस

या $node = \Drupal::entityManager()->getStorage('node')->load($nid);
JF किवाड


1

आप अपडेट करने के लिए Entity के API का उपयोग कर सकते हैं।

$node = Node::load($id);

if ($node instanceof NodeInterface) {
  try {
    $node->set('title', 'My Title');
    $node->set('field_textfield', 'My textfield value');
    $node->save();
  }
  catch (\Exception $e) {
    watchdog_exception('myerrorid', $e);
  }
}

0

पुरानी विधि मेरे लिए भी काम करती है:

$node=node_load($nid);
print_r($node->body->format);
$node->body->format='full_html';
print_r($node->body->format);
$node->save();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.