drupal-8drupal-nodes

Set values for default address fields in Drupal 8


I need to set values for default address fields(langcode, country_code, administrative_area, address_locality ect.) when I create a node. I used below code in the submitForm function of a Form class which is extends by Drupal\Core\Form\FormBase class. But it not works for me.

$venueNode = Node::create([
    'type'          => 'venue',
    'title'         => 'Venue',
    'field_address' => [
        'country_code'        => 'US',
        'address_line1'       => '1098 Alta Ave',
        'locality'            => 'Mountain View',
        'administrative_area' => 'US-CA',
        'postal_code'         => '94043',
    ],
]);

$venueNode->save();

Solution

  • I made a mistake here. There should be a 0 index for field_address. Therefore the code should be like below.

    $venueNode = Node::create([
        'type'          => 'venue',
        'title'         => 'Venue',
        'field_address' => [
            0 => [
                'country_code'        => 'US',
                'address_line1'       => '1098 Alta Ave',
                'locality'            => 'Mountain View',
                'administrative_area' => 'US-CA',
                'postal_code'         => '94043',
            ],
        ],
    ]);
    
    $venueNode->save();