123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Block\Widget;
- use Magento\Customer\Api\AddressMetadataInterface;
- use Magento\Customer\Api\CustomerMetadataInterface;
- use Magento\Customer\Api\Data\CustomerInterface;
- use Magento\Customer\Helper\Address as AddressHelper;
- use Magento\Customer\Model\Options;
- use Magento\Framework\View\Element\Template\Context;
- /**
- * Widget for showing customer name.
- *
- * @method CustomerInterface getObject()
- * @method Name setObject(CustomerInterface $customer)
- *
- * @SuppressWarnings(PHPMD.DepthOfInheritance)
- */
- class Name extends AbstractWidget
- {
- /**
- * @var AddressMetadataInterface
- */
- protected $addressMetadata;
- /**
- * @var Options
- */
- protected $options;
- /**
- * @param Context $context
- * @param AddressHelper $addressHelper
- * @param CustomerMetadataInterface $customerMetadata
- * @param Options $options
- * @param AddressMetadataInterface $addressMetadata
- * @param array $data
- */
- public function __construct(
- Context $context,
- AddressHelper $addressHelper,
- CustomerMetadataInterface $customerMetadata,
- Options $options,
- AddressMetadataInterface $addressMetadata,
- array $data = []
- ) {
- $this->options = $options;
- parent::__construct($context, $addressHelper, $customerMetadata, $data);
- $this->addressMetadata = $addressMetadata;
- $this->_isScopePrivate = true;
- }
- /**
- * @inheritdoc
- */
- public function _construct()
- {
- parent::_construct();
- // default template location
- $this->setTemplate('Magento_Customer::widget/name.phtml');
- }
- /**
- * Can show config value
- *
- * @param string $key
- * @return bool
- */
- protected function _showConfig($key)
- {
- return (bool)$this->getConfig($key);
- }
- /**
- * Can show prefix
- *
- * @return bool
- */
- public function showPrefix()
- {
- return $this->_isAttributeVisible('prefix');
- }
- /**
- * Define if prefix attribute is required
- *
- * @return bool
- */
- public function isPrefixRequired()
- {
- return $this->_isAttributeRequired('prefix');
- }
- /**
- * Retrieve name prefix drop-down options
- *
- * @return array|bool
- */
- public function getPrefixOptions()
- {
- $prefixOptions = $this->options->getNamePrefixOptions();
- if ($this->getObject() && !empty($prefixOptions)) {
- $prefixOption = $this->getObject()->getPrefix();
- $oldPrefix = $this->escapeHtml(trim($prefixOption));
- if ($prefixOption !== null && !isset($prefixOptions[$oldPrefix]) && !isset($prefixOptions[$prefixOption])) {
- $prefixOptions[$oldPrefix] = $oldPrefix;
- }
- }
- return $prefixOptions;
- }
- /**
- * Define if middle name attribute can be shown
- *
- * @return bool
- */
- public function showMiddlename()
- {
- return $this->_isAttributeVisible('middlename');
- }
- /**
- * Define if middlename attribute is required
- *
- * @return bool
- */
- public function isMiddlenameRequired()
- {
- return $this->_isAttributeRequired('middlename');
- }
- /**
- * Define if suffix attribute can be shown
- *
- * @return bool
- */
- public function showSuffix()
- {
- return $this->_isAttributeVisible('suffix');
- }
- /**
- * Define if suffix attribute is required
- *
- * @return bool
- */
- public function isSuffixRequired()
- {
- return $this->_isAttributeRequired('suffix');
- }
- /**
- * Retrieve name suffix drop-down options
- *
- * @return array|bool
- */
- public function getSuffixOptions()
- {
- $suffixOptions = $this->options->getNameSuffixOptions();
- if ($this->getObject() && !empty($suffixOptions)) {
- $suffixOption = $this->getObject()->getSuffix();
- $oldSuffix = $this->escapeHtml(trim($suffixOption));
- if ($suffixOption !== null && !isset($suffixOptions[$oldSuffix]) && !isset($suffixOptions[$suffixOption])) {
- $suffixOptions[$oldSuffix] = $oldSuffix;
- }
- }
- return $suffixOptions;
- }
- /**
- * Class name getter
- *
- * @return string
- */
- public function getClassName()
- {
- if (!$this->hasData('class_name')) {
- $this->setData('class_name', 'customer-name');
- }
- return $this->getData('class_name');
- }
- /**
- * Container class name getter
- *
- * @return string
- */
- public function getContainerClassName()
- {
- $class = $this->getClassName();
- $class .= $this->showPrefix() ? '-prefix' : '';
- $class .= $this->showMiddlename() ? '-middlename' : '';
- $class .= $this->showSuffix() ? '-suffix' : '';
- return $class;
- }
- /**
- * @inheritdoc
- */
- protected function _getAttribute($attributeCode)
- {
- if ($this->getForceUseCustomerAttributes() || $this->getObject() instanceof CustomerInterface) {
- return parent::_getAttribute($attributeCode);
- }
- try {
- $attribute = $this->addressMetadata->getAttributeMetadata($attributeCode);
- } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
- return null;
- }
- if ($this->getForceUseCustomerRequiredAttributes() && $attribute && !$attribute->isRequired()) {
- $customerAttribute = parent::_getAttribute($attributeCode);
- if ($customerAttribute && $customerAttribute->isRequired()) {
- $attribute = $customerAttribute;
- }
- }
- return $attribute;
- }
- /**
- * Retrieve store attribute label
- *
- * @param string $attributeCode
- * @return string
- */
- public function getStoreLabel($attributeCode)
- {
- $attribute = $this->_getAttribute($attributeCode);
- return $attribute ? __($attribute->getStoreLabel()) : '';
- }
- /**
- * Get string with frontend validation classes for attribute
- *
- * @param string $attributeCode
- * @return string
- */
- public function getAttributeValidationClass($attributeCode)
- {
- $attributeMetadata = $this->_getAttribute($attributeCode);
- return $attributeMetadata ? $attributeMetadata->getFrontendClass() : '';
- }
- /**
- * Check if attribute is required
- *
- * @param string $attributeCode
- * @return bool
- */
- private function _isAttributeRequired($attributeCode)
- {
- $attributeMetadata = $this->_getAttribute($attributeCode);
- return $attributeMetadata ? (bool)$attributeMetadata->isRequired() : false;
- }
- /**
- * Check if attribute is visible
- *
- * @param string $attributeCode
- * @return bool
- */
- private function _isAttributeVisible($attributeCode)
- {
- $attributeMetadata = $this->_getAttribute($attributeCode);
- return $attributeMetadata ? (bool)$attributeMetadata->isVisible() : false;
- }
- }
|