Рейтинг:0

Вызов setExposedInput() из команды Drush не имеет никакого эффекта

флаг ve

У нас есть пользовательская команда Drush, реализованная с использованием следующего кода.

класс JobApplicationExportCommands расширяет DrushCommands {

  /**
   * Экспорт заявлений о приеме на работу Dorea с момента последнего запуска в csv
   *
   * @command dummy:job-application-export
   * @aliases duje
   */
  общественная функция drush_dummy_export() {
    $applicationWebformIds = Drupal::entityQuery('веб-форма')
      ->условие('категория', 'формула Bewerbungs')
      ->выполнить();

    $applicationView = Views::getView('all_applications');
    $applicationView->setDisplay('по умолчанию');
    $applicationView->setExposedInput([
      'webform_ids' => array_keys($applicationWebformIds),
      'отправлено' => '2021-01-01'
    ]);

    $applicationView->выполнить();

    // Это выводит 0, что неверно.
    print_r(количество($applicationView->результат));
  }

}

Конфигурация представления следующая.

Скриншот

Если я выполняю ту же логику через пользовательский контроллер/обычный запрос, представление возвращает значения.

Я что-то пропустил? Кто-нибудь знает, почему открытый ввод представления игнорируется?

флаг us
Просто мысль: возможно, контекстный фильтр мог бы работать вместо этого?
флаг ve
thx, я проверю это :)
флаг ru
Однажды у меня была странная проблема, когда `setExposedInput` работал только тогда, когда в расширенных настройках представлений было включено `use ajax`. Не уверен, почему и помогает ли это здесь, но стоит попробовать.
флаг ve
Самое смешное, что даже если я отброшу открытый ввод. и используйте более жестко закодированный подход `hook_views_query_alter`, я получаю 0 результатов через drush
флаг ve
также ни включение ajax, ни использование контекстных фильтров не изменили неожиданное поведение.
флаг ve
Эм-м-м! Я думаю, что это как-то связано с пользователем - если я не вошел в систему как администратор, я также получаю 0 результатов через интерфейс.
Рейтинг:0
флаг ve

Хорошо, коллега снова спас меня: проверки доступа можно отключить индивидуально для каждого представления через Настройки запроса> Отключить перезапись SQL.

введите описание изображения здесь

Для этого конкретного представления и варианта использования это именно то, что нужно, так как его могут вызывать только серверные процессы.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.