Уведомления
Функция позволяет отправлять уведомления пользователю. Notifications добавляют в строку состояния новую кликабельную иконку, при нажатии на которую открывается новая вкладка со списком всех уведомлений. Также отображается индикатор с количеством непрочитанных уведомлений.
Когда для пользователя появляется новое уведомление, оно отображается в виде окна с возможностью закрыть его, отметить как прочитанное или открыть подробный просмотр.

Пользователь может использовать кнопку Share via Notifications, чтобы открыть окно создания нового уведомления и предварительно заполнить поле вложения нужным элементом.

Работа с уведомлениями через API
Обзор
Для доступа к уведомлениям и работы с ними через API ознакомьтесь с сервисом Pimcore\Model\Notification\Service\NotificationService.
Обратите внимание, что данный сервис помечен как internal и может изменяться в будущих версиях.
<?php
/**
* @throws UnexpectedValueException
*/
public function find(int $id): Notification
{
$notification = Notification::getById($id);
if (!$notification instanceof Notification) {
throw new UnexpectedValueException("Notification with the ID {$id} doesn't exists");
}
return $notification;
}
/**
* @param array<string, mixed> $filter
* @param array{offset?: int|string, limit?: int|string|null} $options
*
* @return array{total: int, data: Notification[]}
*
* @throws Exception
*/
public function findAll(array $filter = [], array $options = []): array
{
$listing = new Listing();
$filter = [...$filter, ...['isStudio' => 0]];
$conditions = [];
$conditionVariables = [];
foreach ($filter as $key => $value) {
if (isset($value['condition'])) {
$conditions[] = $value['condition'];
$conditionVariables[] = $value['conditionVariables'] ?? [];
} else {
$conditions[] = $key . ' = :' . $key;
$conditionVariables[] = [$key => $value];
}
}
$condition = implode(' AND ', $conditions);
$listing->setCondition($condition, array_merge(...$conditionVariables));
$listing->setOrderKey('creationDate');
$listing->setOrder('DESC');
$offset = $options['offset'] ?? 0;
$limit = $options['limit'] ?? null;
if (is_string($offset)) {
//TODO: Trigger deprecation
$offset = (int) $offset;
}
if (is_string($limit)) {
//TODO: Trigger deprecation
$limit = (int) $limit;
}
$this->beginTransaction();
$result = [
'total' => $listing->count(),
'data' => $listing->getItems($offset, $limit),
];
$this->commit();
return $result;
}
Если необходимо отправить уведомления пользователю:
<?php
use Pimcore\Model\Notification\Service\NotificationService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
public function defaultAction(
Request $request,
NotificationService $notificationService
): Response {
$element = Asset::getById(1); // Optional
$notificationService->sendToUser(
4, // User recipient
2, // User sender 0 - system
'Example notification',
'Example message',
$element // Optional linked element
);
// ...
}
Если нужно отправить уведомления пользователям из группы:
<?php
use Pimcore\Model\Notification\Service\NotificationService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
public function defaultAction(
Request $request,
NotificationService $notificationService
): Response {
$element = Asset::getById(1); // Optional
$notificationService->sendToGroup(
4, // Group recipient
2, // User sender 0 - system
'Example notification',
'Example message',
$element // Optional linked element
);
// ...
}
Конфигурация
Конфигурация позволяет включать или отключать меню Notifications menu в панели инструментов, а также проверку новых уведомлений (url: /admin/notification/find-last-unread).
Настройка выполняется в конфигурации pimcore_admin в разделе notifications.
Значения по умолчанию:
pimcore_admin:
notifications:
enabled: true
check_new_notification:
enabled: true
interval: 30
Примеры конфигурации:
- Отключить меню уведомлений и проверку новых непрочитанных уведомлений:
pimcore_admin:
notifications:
enabled: false
- Отключить только проверку новых непрочитанных уведомлений:
pimcore_admin:
notifications:
check_new_notification:
enabled: false
- Изменить интервал проверки новых непрочитанных уведомлений (в секундах):
pimcore_admin:
notifications:
check_new_notification:
interval: 60
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.