6 declare(strict_types=1);
11 use Magento\Framework\Validation\ValidationResultFactory;
24 private $validationResultFactory;
31 private $shippingConfig;
37 public function __construct(ValidationResultFactory $validationResultFactory,
Config $shippingConfig)
39 $this->validationResultFactory = $validationResultFactory;
40 $this->shippingConfig = $shippingConfig;
48 $carrierLinks =
$source->getCarrierLinks();
51 if (
null === $carrierLinks) {
52 return $this->buildValidationResult(
$errors);
55 if (!is_array($carrierLinks)) {
56 $errors[] =
__(
'"%field" must be list of SourceCarrierLinkInterface.', [
59 return $this->buildValidationResult(
$errors);
62 if (count($carrierLinks) &&
$source->isUseDefaultCarrierConfig()) {
63 $errors[] =
__(
'You can\'t configure "%field" because you have chosen Global Shipping configuration.', [
66 return $this->buildValidationResult(
$errors);
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
79 return $this->buildValidationResult(
$errors);
90 return $this->validationResultFactory->create([
'errors' =>
$errors]);
validate(SourceInterface $source)
__construct(ValidationResultFactory $validationResultFactory, Config $shippingConfig)