Views bulk operations - не применяется к группе товаров

Главные вкладки

Аватар пользователя mmjmm mmjmm 15 января в 7:50

Здравствуйте.
Создал кастомный модуль, наследующийся от VBO. В нем в src/Plugin/Action создал файл ViewsBulkOperationManufacturerProductAction.php
В этом файле происходит описание метода смены производителя товара (смена значения поля field_brand)

<?php
/**
 * @file
 * Contains \Drupal\my_action\Plugin\Action\ViewsBulkOperationProductAction.
 */

namespace Drupal\ap_vbo_product_actions\Plugin\Action;

use 

Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase;
use 
Drupal\views_bulk_operations\Action\ViewsBulkOperationsPreconfigurationInterface;
use 
Drupal\Core\Plugin\PluginFormInterface;
use 
Drupal\Core\Form\FormStateInterface;
use 
Drupal\Core\Session\AccountInterface;

/**
 * Action description.
 *
 * @Action(
 *   id = "ap_vbo_product_specify_manufacturer",
 *   label = @Translation("Указать производителя"),
 *   type = "",
 *   confirm = TRUE
 * )
 */

class ViewsBulkOperationManufacturerProductAction extends ViewsBulkOperationsActionBase implements ViewsBulkOperationsPreconfigurationInterfacePluginFormInterface {

    

/**
     * {@inheritdoc}
     */
    
public function execute($entity NULL) {
      if (
$entity instanceof \Drupal\node\NodeInterface){
                
$entity->set('field_brand'$this->configuration['product_manufacturer']); //указание производителя
                
$entity->save();
      }
    }

  public function 

executeMultiple(array $entities) {
    foreach (
$entities as $entity) {
      
$this->execute($entity);
    }
  }

    

/**
     * {@inheritdoc}
     */
    
public function buildPreConfigurationForm(array $form, array $valuesFormStateInterface $form_state) {
    }

    

/**
     * Configuration form builder.
     *
     * If this method has implementation, the action is
     * considered to be configurable.
     *
     * @param array $form
     *   Form array.
     * @param Drupal\Core\Form\FormStateInterface $form_state
     *   The form state object.
     *
     * @return array
     *   The configuration form.
     */
    
public function buildConfigurationForm(array $formFormStateInterface $form_state) {
        
$form['product_manufacturer'] = [
            
'#type' => 'textfield',
            
'#title' => t('Производитель'),
        ];

        return 

$form;
    }

    

/**
     * Submit handler for the action configuration form.
     *
     * If not implemented, the cleaned form values will be
     * passed directly to the action $configuration parameter.
     *
     * @param array $form
     *   Form array.
     * @param Drupal\Core\Form\FormStateInterface $form_state
     *   The form state object.
     */
    
public function submitConfigurationForm(array &$formFormStateInterface $form_state) {
        
$this->configuration['product_manufacturer'] = $form_state->getValue('product_manufacturer');
    }

    

/**
     * {@inheritdoc}
     */
    
public function access($objectAccountInterface $account NULL$return_as_object FALSE) {
        if (
$object->getEntityType() === 'node') {
            
$access $object->access('update'$accountTRUE)
                ->
andIf($object->status->access('edit'$accountTRUE));
            return 
$return_as_object $access $access->isAllowed();
        }

        return 

TRUE;
    }

}

?>

Добавил в представление своего списка товаров Массовые операции, выбрал необходимые действия.
Перехожу в список товаров, отмечаю чекбокс "Выбрать все страницы", выбираю действие "Указать производителя" и "Применить".
По итогу выдается ошибка:

Возникла AJAX HTTP ошибка.
Полученный код HTTP: 200
Следует отладочная информация.
Путь: /batch?id=1006&op=do_nojs&op=do
Текст Состояния: OK
Текст Ответа: Error: Call to a member function getOffset() on null in Drupal\views_bulk_operations\Service\ViewsBulkOperationsActionProcessor->getPageList() (line 241 of /var/www/html/web/modules/contrib/views_bulk_operations/src/Service/ViewsBulkOperationsActionProcessor.php).