Skip to main content

Alter entity value before save

How to list the name of Entity types in site to use hooks,

use Drupal\Core\Entity\EntityInterface;

function hook_entity_presave(EntityInterface $entity) {

}

or
function hook_entity_type_presave(EntityInterface $entity) {

}
but you should know the exact name of entity type , to do so
use : drupal debug:entity (drush command)
so for taxonomy case use,
function itg_multi_category_entity_insert(Drupal\Core\Entity\EntityInterface $entity) {
  if(!empty($entity->bundle()) && $entity->bundle() == 'category_management'){
    $entity_values = $entity->toArray();
    //Get the custom parent cat id 
    $parent_custom = $entity_values['field_relation'][0]['target_id'];
    if($parent_custom == ''){
      $parent_custom = 0;
    }
    $term_load = \Drupal\taxonomy\Entity\Term::load($entity_values['tid'][0]['value']);
    $term_load->set('parent',$parent_custom);
    $term_load->save();
    }
}

Comments

Popular posts from this blog

Get The field values of node in Drupal 8

use Drupal \ node \ NodeInterface ; /** * Implements hook_ENTITY_TYPE_insert() for node entities. * * This tests saving a node on node insert. * * @see \Drupal\node\Tests\NodeSaveTest::testNodeSaveOnInsert() */ function node_test_node_insert ( NodeInterface $node ) { // Set the node title to the node ID and save. if ( $node - > getTitle ( ) == 'new' ) { $node - > setTitle ( 'Node ' . $node - > id ( ) ) ; $node - > setNewRevision ( FALSE ) ; $node - > save ( ) ; } } Now There is so many functions are there to get the values, For All the functions available visit the API code, https://api.drupal.org/api/drupal/core%21modules%21node%21src%21NodeInterface.php/interface/NodeInterface/8.2.x Some of as below, Node edit form, Drupal 8 Automatically Load the whole object no need to load the entity like below, if ($event->getFormId() == 'node_alexa_audio_clips_edit_form') { $node = \Drupal::ro...

Drupal Setup with docker

Option 1:  docker pull mysql docker pull phpmyadmin docker pull drupal docker run -d --name MysqlClient -e MYSQL_ROOT_PASSWORD=drupal mysql Download the phpmyadmin image and Setup Container: docker run --name phpmyadmin -d --link MysqlClient:db -p 8083:80 phpmyadmin Download the Drupal image and Setup Container: docker run -d --name dweb2 --link MysqlClient -p 8082:80 -e MYSQL_USER:root -e MYSQL_PASSWORD:drupal drupal   We are using docker4 drupal and following below URL https://wodby.com/docs/1.0/stacks/drupal/local/ From Mount my codebase Download and unpack docker4drupal.tar.gz with hidden files in a new directory, also get the drupal code with in web directory composer create - project drupal / recommended - project my_site_name_dir It means with in new directory we have docker files and drupal files also has web folder for drupal. now run docker-compose up -d Now PROJECT_BASE_URL is mentioned in .env file open this url in the web with port, it will open the drupal page, ...