Skip to content
For AI agents: the complete documentation index is available at llms.txt; this page is also available as Markdown at index.md.

Address field type

This field represents and handles address fields. It allows you to customize address fields per country.

Name Internal name Expected input
Address ibexa_address string, string, array

The Address field type is available via the Address Bundle provided by the ibexa/fieldtype-address package.

PHP API field type

Inputs

Type Description Example
string Name of the address. My home address
string Country code in ISO 3166-1 alpha-2 format. PL
array Additional fields, defined by address format. see below

Example input

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
use Ibexa\FieldTypeAddress\FieldType;

new FieldType\Value(
    'My home address',
    'PL',
    [
        'city' => 'Warsaw',
        'region' => 'Masovian',
        'postal_code' => '11-123',
    ]
);

Validation

This field type validates whether Country and Name fields have been filled out.

Value object

Properties

Property Type Description
$name string Name of the address.
$country string Country code in ISO 3166-1 alpha-2 format.
$fields array Additional fields, defined by address format.

Constructor

See above (Example input).

Formats

The following default configuration defines default fields for personal address type:

1
2
3
4
5
6
7
8
formats:
    personal:
        country:
            default:
                - region
                - locality
                - street
                - postal_code

Modifying field configuration

1
2
3
4
5
6
7
8
formats:
    billing_address:
        country:
            DE:
                - tax_number
                - city
                - address
                - postal_code

Adds (or alters) an address format for DE country of billing_address type.

Field form types

By default, each field is a simple text input with a label made of field identifier. To change the type of field, you need to listen to a specific event. For each field below events are dispatched (in order):

1
2
3
ibexa.address.field.{FIELD_IDENTIFIER}
ibexa.address.field.{FIELD_IDENTIFIER}.{ADDRESS_TYPE}
ibexa.address.field.{FIELD_IDENTIFIER}.{ADDRESS_TYPE}.{COUNTRY_CODE}

Example

1
2
3
ibexa.address.field.tax_number
ibexa.address.field.tax_number.billing_address
ibexa.address.field.tax_number.billing_address.DE

Example event listener

An event listener can also provide validation by using either one of constraints provided by Symfony, or a custom constraint.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use Ibexa\Contracts\FieldTypeAddress\Event\MapFieldEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Validator\Constraints\Positive;

class ExampleAddressSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            'ibexa.address.field.tax_number.billing_address' => 'onBillingAddressTaxNumber',
        ];
    }

    public function onBillingAddressTaxNumber(MapFieldEvent $event): void
    {
        $event->setLabel('VAT');
        $event->setType(IntegerType::class);
        $event->setOptions([
            'attr' => ['class' => 'some-tax-number'],
            'constraints' => [new Positive()],
        ]);
    }
}