Problem/Motivation
When Simple Address fields are not required, after saving a node, the following error appears:
Notice: Trying to get property of non-object in Drupal\simpleaddress\Plugin\Field\FieldFormatter\SimpleAddressDefaultFormatter->getAddressFormatSettings() (line 68 of modules/contrib/simpleaddress/src/Plugin/Field/FieldFormatter/SimpleAddressDefaultFormatter.php).
Drupal\simpleaddress\Plugin\Field\FieldFormatter\SimpleAddressDefaultFormatter->getAddressFormatSettings(Object) (Line: 36)
Drupal\simpleaddress\Plugin\Field\FieldFormatter\SimpleAddressDefaultFormatter->viewElements(Object, 'en') (Line: 80)
Drupal\Core\Field\FormatterBase->view(Object, NULL) (Line: 259)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 303)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 246)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 203)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func(Array, Array) (Line: 379)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 195)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 572)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 144)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 62)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 98)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 77)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 50)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 626)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Proposed resolution
This appears to be caused by the assumption that the country field will always be set. This might not the case if the Simple Address field is not required on the content type. This is just a warning, so the fix could just be to check to see if $items[0] is set.
Comments
Comment #2
mirie commentedComment #3
mirie commentedAttaching patch with this isset() check
Comment #4
mirie commentedLol, my previous patch was empty. Sorry about that. Here's the actual patch!
Comment #6
dakala@mirie; Yeah, looks good. Thanks