我的 Drupal 8 自定义模块在日志中创建错误


我为 Drupal

8.6 和 Drupal Commerce 2 创建了一个自定义模块。

它可以工作,但是当我查看drupal日志时,每次重新加载页面时都会收到PHP警告。

如何更正这些警告?

commerce_marketplace_premium_merchant.module

<?php
/**
 * @file
 * Hook implementations of commerce_marketplace_premium_merchant module.
 */
use Drupalcommerce_storeEntityStoreType;
use Drupalcommerce_productEntityProductType;
use Drupalcommerce_productEntityProductVariationType;
use DrupalCoreEntityDisplayEntityViewDisplayInterface;
use DrupalCoreUrl;
use DrupalCoreFormFormStateInterface;
use Drupalcommerce_productEntityProductVariation;
function commerce_marketplace_premium_merchant_form_commerce_order_item_add_to_cart_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $current_store = Drupal::service('commerce_store.current_store');
  $owner = $current_store->getStore()->getOwner();
  foreach ($form_state->getFormObject()->getEntity()->getPurchasedEntity()->getProduct()->getStores() as $store) {
    $bundle = $store->bundle();
    // Product type abonnement.
    if ($bundle == 'online') {
      if (isset($form["#attributes"]["class"]) && in_array("commerce-order-item-add-to-cart-form", $form["#attributes"]["class"])) {
        $selectedVariationId = $form_state->get('selected_variation');
        $selectedVariation = ProductVariation::load($selectedVariationId);
        $form['actions']['submit']['#value'] = t('Subscribe');
        if (!$owner->hasRole('marchand')) {
          $form['actions']['submit']['#attributes']['class'] = array('button--add-to-cart', 'button button--primary', 'js-form-submit', 'form-submit', 'is-disabled', 'btn-warning', 'btn');
          $form['actions']['submit']['#disabled'] = TRUE;
        }
      }
    }
    // Store type personnel.
    elseif ($bundle == 'personnel') {
      if (isset($form["#attributes"]["class"]) && in_array("commerce-order-item-add-to-cart-form", $form["#attributes"]["class"])) {
        $selectedVariationId = $form_state->get('selected_variation');
        $selectedVariation = ProductVariation::load($selectedVariationId);
        $form['actions']['submit']['#value'] = t('Offline sales');
        $form['actions']['submit']['#attributes']['class'] = array('button--add-to-cart', 'button button--primary', 'js-form-submit', 'form-submit', 'is-disabled', 'btn-warning', 'btn');
        $form['actions']['submit']['#disabled'] = TRUE;
      }
    }
    // Store type professionnel.
    elseif ($bundle == 'professionnel') {
        if (!$owner->hasRole('marchand_premium')) {
          if (isset($form["#attributes"]["class"]) && in_array("commerce-order-item-add-to-cart-form", $form["#attributes"]["class"])) {
            $selectedVariationId = $form_state->get('selected_variation');
            $selectedVariation = ProductVariation::load($selectedVariationId);
            $form['actions']['submit']['#value'] = t('Offline sales');
            $form['actions']['submit']['#attributes']['class'] = array('button--add-to-cart', 'button button--primary', 'js-form-submit', 'form-submit', 'is-disabled', 'btn-warning', 'btn');
            $form['actions']['submit']['#disabled'] = TRUE;
          }
        }
    }
  }
}

PHP 警告 :

Warning: array_flip(): Can only flip STRING and INTEGER values! in DrupalCoreEntityEntityStorageBase->loadMultiple() (line 264 of /var/www/www-example-com/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php) #0 /var/www/www-example-com/web/core/includes/bootstrap.inc(584): _drupal_error_handler_real(2, 'array_flip(): C...', '/var/www/www-s1...', 264, Array) #1 [internal function]: _drupal_error_handler(2, 'array_flip(): C...', '/var/www/www-s1...', 264, Array) #2 /var/www/www-example-com/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(264): array_flip(Array) #3 /var/www/www-example-com/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(249): DrupalCoreEntityEntityStorageBase->loadMultiple(Array) #4 /var/www/www-example-com/web/core/lib/Drupal/Core/Entity/Entity.php(527): DrupalCoreEntityEntityStorageBase->load(NULL) #5 /var/www/www-example-com/web/modules/custom/commerce_marketplace_premium_merchant/commerce_marketplace_premium_merchant.module(25): DrupalCoreEntityEntity::load(NULL) #6 /var/www/www-example-com/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(539): commerce_marketplace_premium_merchant_form_commerce_order_item_add_to_cart_form_alter(Array, Object(DrupalCoreFormFormState), 'commerce_order_...') #7 /var/www/www-example-com/web/core/lib/Drupal/Core/Form/FormBuilder.php(834): DrupalCoreExtensionModuleHandler->alter('form', Array, Object(DrupalCoreFormFormState), 'commerce_order_...') #8 /var/www/www-example-com/web/core/lib/Drupal/Core/Form/FormBuilder.php(276): DrupalCoreFormFormBuilder->prepareForm('commerce_order_...', Array, Object(DrupalCoreFormFormState)) #9 /var/www/www-example-com/web/modules/contrib/commerce/modules/product/src/ProductLazyBuilders.php(96): DrupalCoreFormFormBuilder->buildForm('commerce_order_...', Object(DrupalCoreFormFormState)) #10 [internal function]: Drupalcommerce_productProductLazyBuilders->addToCartForm('50', 'full', true, 'fr') #11 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(358): call_user_func_array(Array, Array) #12 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(195): DrupalCoreRenderRenderer->doRender(Array, true) #13 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(151): DrupalCoreRenderRenderer->render(Array, true) #14 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(582): DrupalCoreRenderRenderer->DrupalCoreRender{closure}() #15 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(152): DrupalCoreRenderRenderer->executeInRenderContext(Object(DrupalCoreRenderRenderContext), Object(Closure)) #16 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(166): DrupalCoreRenderRenderer->renderPlain(Array) #17 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(667): DrupalCoreRenderRenderer->renderPlaceholder('<drupal-render-...', Array) #18 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(552): DrupalCoreRenderRenderer->replacePlaceholders(Array) #19 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(195): DrupalCoreRenderRenderer->doRender(Array, true) #20 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(139): DrupalCoreRenderRenderer->render(Array, true) #21 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(582): DrupalCoreRenderRenderer->DrupalCoreRender{closure}() #22 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/Renderer.php(140): DrupalCoreRenderRenderer->executeInRenderContext(Object(DrupalCoreRenderRenderContext), Object(Closure)) #23 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php(258): DrupalCoreRenderRenderer->renderRoot(Array) #24 /var/www/www-example-com/web/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php(131): DrupalCoreRenderHtmlResponseAttachmentsProcessor->renderPlaceholders(Object(DrupalCoreRenderHtmlResponse)) #25 /var/www/www-example-com/web/core/lib/Drupal/Core/EventSubscriber/HtmlResponseSubscriber.php(45): DrupalCoreRenderHtmlResponseAttachmentsProcessor->processAttachments(Object(DrupalCoreRenderHtmlResponse)) #26 [internal function]: DrupalCoreEventSubscriberHtmlResponseSubscriber->onRespond(Object(SymfonyComponentHttpKernelEventFilterResponseEvent), 'kernel.response', Object(DrupalComponentEventDispatcherContainerAwareEventDispatcher)) #27 /var/www/www-example-com/web/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(SymfonyComponentHttpKernelEventFilterResponseEvent), 'kernel.response', Object(DrupalComponentEventDispatcherContainerAwareEventDispatcher)) #28 /var/www/www-example-com/vendor/symfony/http-kernel/HttpKernel.php(191): DrupalComponentEventDispatcherContainerAwareEventDispatcher->dispatch('kernel.response', Object(SymfonyComponentHttpKernelEventFilterResponseEvent)) #29 /var/www/www-example-com/vendor/symfony/http-kernel/HttpKernel.php(130): SymfonyComponentHttpKernelHttpKernel->filterResponse(Object(DrupalCoreRenderHtmlResponse), Object(SymfonyComponentHttpFoundationRequest), 1) #30 /var/www/www-example-com/vendor/symfony/http-kernel/HttpKernel.php(68): SymfonyComponentHttpKernelHttpKernel->handleRaw(Object(SymfonyComponentHttpFoundationRequest), 1) #31 /var/www/www-example-com/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): SymfonyComponentHttpKernelHttpKernel->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #32 /var/www/www-example-com/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): DrupalCoreStackMiddlewareSession->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #33 /var/www/www-example-com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(99): DrupalCoreStackMiddlewareKernelPreHandle->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #34 /var/www/www-example-com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(78): Drupalpage_cacheStackMiddlewarePageCache->pass(Object(SymfonyComponentHttpFoundationRequest), 1, true) #35 /var/www/www-example-com/web/core/modules/ban/src/BanMiddleware.php(50): Drupalpage_cacheStackMiddlewarePageCache->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #36 /var/www/www-example-com/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): DrupalbanBanMiddleware->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #37 /var/www/www-example-com/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): DrupalCoreStackMiddlewareReverseProxyMiddleware->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #38 /var/www/www-example-com/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): DrupalCoreStackMiddlewareNegotiationMiddleware->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #39 /var/www/www-example-com/web/core/lib/Drupal/Core/DrupalKernel.php(693): StackStackedHttpKernel->handle(Object(SymfonyComponentHttpFoundationRequest), 1, true) #40 /var/www/www-example-com/web/index.php(19): DrupalCoreDrupalKernel->handle(Object(SymfonyComponentHttpFoundationRequest)) #41 {main}.

这是模块所在的页面:

<article{{ attributes.addClass('commerce-product--default--full') }}>
  <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 bs-region-header">
    {{ product.stores }}
    <div class="row">
      <h1>{{ product_entity.title.value }}</h1>
      <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 bs-left">
        {{ product.variation_field_default_image }}
      </div>
      <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 bs-right">
        <div class="bs-field-variation">
          {{ product.variation_sku }}
          {{ product.variation_field_default_sku_store }}
          {{ product.variation_list_price }}
          {{ product.variation_price }}
          {{ product.variations }}
          <div class="prerequis-abonnement">
            <i><b>Pourquoi le bouton "S'abonner" est-il désactivé ?</b><br>
            Vous devez créer une boutique professionnelle et y ajouter des produits ou des services.<br>
            Une fois que celle-ci aura été validée par l'administrateur, votre abonnement sera automatiquement activé.<br>
            <u>Vous n'avez pas besoin d'entrer vos coordonnées bancaires</u></i> <i class="far fa-thumbs-up"></i>
          </div>
        </div>
      </div>
      <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 bs-bottom">
        {{ product.body }}
        {{ product.flag_report_product }}
        {{ product.flag_like_product }}
        {{ drupal_block('shariff_block') }}
        {{ product_entity.links }}
      </div>
    </div>
  </div>
</article>

似乎这一行是问题所在(并且有多个实例(:

$selectedVariation = ProductVariation::load($selectedVariationId);

$selectedVariationId NULL时,似乎会导致错误。

也许用if (!empty($selectedVariationId))或类似的东西包围街区?

最新更新