Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CarrierLinksValidator.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
11 use Magento\Framework\Validation\ValidationResultFactory;
15 
20 {
24  private $validationResultFactory;
25 
31  private $shippingConfig;
32 
37  public function __construct(ValidationResultFactory $validationResultFactory, Config $shippingConfig)
38  {
39  $this->validationResultFactory = $validationResultFactory;
40  $this->shippingConfig = $shippingConfig;
41  }
42 
47  {
48  $carrierLinks = $source->getCarrierLinks();
49  $errors = [];
50 
51  if (null === $carrierLinks) {
52  return $this->buildValidationResult($errors);
53  }
54 
55  if (!is_array($carrierLinks)) {
56  $errors[] = __('"%field" must be list of SourceCarrierLinkInterface.', [
58  ]);
59  return $this->buildValidationResult($errors);
60  }
61 
62  if (count($carrierLinks) && $source->isUseDefaultCarrierConfig()) {
63  $errors[] = __('You can\'t configure "%field" because you have chosen Global Shipping configuration.', [
65  ]);
66  return $this->buildValidationResult($errors);
67  }
68 
69  $availableCarriers = $this->shippingConfig->getAllCarriers();
70  foreach ($carrierLinks as $carrierLink) {
71  $carrierCode = $carrierLink->getCarrierCode();
72  if (array_key_exists($carrierCode, $availableCarriers) === false) {
73  $errors[] = __('Carrier with code: "%carrier" don\'t exists.', [
74  'carrier' => $carrierCode
75  ]);
76  }
77  }
78 
79  return $this->buildValidationResult($errors);
80  }
81 
88  private function buildValidationResult(array $errors): ValidationResult
89  {
90  return $this->validationResultFactory->create(['errors' => $errors]);
91  }
92 }
$source
Definition: source.php:23
__()
Definition: __.php:13
$errors
Definition: overview.phtml:9