Рейтинг:0

Перезаписать обработанное сообщение определенного действия VBO

флаг in

Я использую VBO для выполнения массовых операций в моем представлении. У меня есть 2 основных действия VBO и 2 пользовательских действия.

  • Опубликовать комментарий
  • Отменить публикацию комментария
  • Опубликовать ресурс
  • Отменить публикацию ресурса

Когда Применить действие кнопка нажата, когда ни одна из строк сетки не выбрана, я получаю это сообщение об ошибке.

Выберите один или несколько комментариев для выполнения обновления.

Я хотел бы переписать это сообщение об ошибке как Для выполнения этого действия необходимо выбрать вложение..

Как я могу этого добиться? я в курсе hook_views_bulk_operations_finish(), но не перезаписывает конкретное действие.

Рейтинг:3
флаг in

Вы можете попробовать следующее:

  1. Определите свой собственный плагин ViewsField, который расширяет CommentBulkForm (откуда приходит это сообщение)
<?php

пространство имен Drupal\ваш_модуль\Плагин\представления\поле;

используйте Drupal\views\Plugin\views\field\BulkForm;

/**
 * Определяет настраиваемый элемент массовой формы операций с комментариями.
 *
 * @ViewsField("custom_comment_bulk_form")
 */
класс CustomCommentBulkForm расширяет CommentBulkForm {

  /**
   * {@inheritdoc}
   */
  защищенная функция emptySelectedMessage() {
    return $this->t('Для выполнения этого действия необходимо выбрать вложение.');
  }

}

  1. Предоставьте свой плагин для просмотра:
функция your_module_views_data() {

  $data['комментарий']['custom_comment_bulk_form'] = [
    'title' => t('Форма массовой обработки пользовательских комментариев'),
    'help' => t('Добавить элемент формы, который позволяет выполнять операции над несколькими комментариями с помощью настраиваемых сообщений.'),
    'поле' => [
      'id' => 'custom_comment_bulk_form',
    ],
  ];

  вернуть $данные;
}
  1. Наконец, перезапишите (или переопределите) вашу (views.view.) конфигурацию комментариев, чтобы ваше существующее поле «Комментарий: массовая форма операций с комментариями» принудительно использовало ваш подключаемый модуль ViewsField. Один из способов перезаписать — через drush:
drush cset views.view.comment \
  display.default.display_options.fields.comment_bulk_form.field \
  custom_comment_bulk_form

В конечном итоге это позволит вам установить собственное сообщение:

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

Удачи!

флаг in
Есть вопрос. Я создал плагин ViewsField внутри своего модуля по этому пути — mymodule\src]plugin\views\field\custom_comment_bulk_form.php. Но этот путь нигде не упоминается ни в hook_views_data(), ни в файле конфигурации. Так как же будет читаться мой пользовательский файл плагина?
флаг in
также я вижу ошибку «Ошибка: Класс 'Drupal\views\Plugin\views\field\BulkForm\CommentBulkForm' не найден в include()» из плагина. :(
флаг in
нм, это сработало как шарм!! большое спасибо!
флаг in
Если я хочу обновить сообщение о других действиях, таких как «удалить комментарий» или «отменить публикацию комментария», могу ли я использовать вышеупомянутое решение?
Stefanos Petrakis avatar
флаг in
Это сообщение используется (и передается) различными действиями, доступными через подключаемый модуль CommentBulkForm ViewsField.
флаг in
Вы можете добавить образец для обновления сообщения «Удалить комментарий»? Я хочу обновить его в основном с точки зрения модуля просмотра массовых операций.
Stefanos Petrakis avatar
флаг in
Я считаю, что это потребует отдельного вопроса.
флаг in
https://drupal.stackexchange.com/questions/308652/alter-action-processing-results-message-for-a-specific-action - у меня это почти работает, за исключением того, что я поражен условием. не могли бы вы проверить этот вопрос? Благодарность

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

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