I want to manage the "extension attribute" named "example" into "Customer Address" entity.
I've created a new custom module, and I've added the extension attribute into etc/extension_attribute.xml
configuration file:
<extension_attributes for="Magento\Customer\Api\Data\AddressInterface">
<attribute code="example" type="boolean" />
</extension_attributes>
Then, I've deleted the cache and run the magento setup:di:compile
command in order to recreate the Dependency Injection cache files.
I could see them in the var/generation
folder:
./var/generation/Magento/Customer/Api/Data/AddressExtension.php:
public function getExample()
./var/generation/Magento/Customer/Api/Data/AddressExtension.php:
* @param boolean $example ./var/generation/Magento/Customer/Api/Data/AddressExtension.php:
public function setExample($example)
./var/generation/Magento/Customer/Api/Data/AddressExtension.php:
$this->setData('example', $example);
./var/generation/Magento/Customer/Api/Data/AddressExtensionInterface.php: public function getExample();
./var/generation/Magento/Customer/Api/Data/AddressExtensionInterface.php: * @param boolean $example ./var/generation/Magento/Customer/Api/Data/AddressExtensionInterface.php: public function setExample($example);
Now... I want to intercept \Magento\Customer\Api\AddressRepositoryInterface::getById()
(after) action.
I've added a new plugin into etc/di.xml
configuration file:
<type name="Magento\Customer\Model\ResourceModel\AddressRepository">
<plugin name="your_plugin_name"
type="your_name\module_name\Plugin\CustomerAddressRepository"
sortOrder="1000" />
</type>
and I've created the related plugin:
class CustomerAddressRepository
{
public function afterGetById(
$subject,
\Magento\Customer\Model\Data\Address $result
) {
// my code...
}
}
but when I try to get the new extension attribute example
, the $result->getExtensionAttributes()
function always returns a null
value.
I've already implemented extension attributes into the Magento_Checkout
module with success.
I've already read similar question like this.
but I haven't found any solution to my problem.
Have I forgotten an implementation step?