Я пытаюсь автоматически добавить элемент в подочередь при сохранении. И по какой-то причине это работает, только если я включаю умереть()
после.
Это добавляет новый узел в очередь
функция custom_module_entity_insert (EntityInterface $ сущность) {
...
$subqueue = EntitySubqueue::load($entityqueue_id);
$subqueue->addItem($entity)->save();
умереть();
}
Это НЕ добавляет новый узел в очередь
функция custom_module_entity_insert (EntityInterface $ сущность) {
...
$subqueue = EntitySubqueue::load($entityqueue_id);
$subqueue->addItem($entity)->save();
}
Я пробовал использовать операторы сна и не могу заставить его работать без умереть()
, который разрывает страницу после сохранения, очевидно. В журнале ошибок нет никаких полезных сообщений. Элемент сохраняется, просто не добавляется в очередь без умереть()
.
Есть ли у вас какие-либо идеи?
Это моя рабочая функция (и разбивает страницу)
/**
* Реализует hook_entity_insert().
*/
функция custom_module_entity_insert (EntityInterface $ сущность) {
// Беспокоитесь только о сущностях, которые доступны для поля.
if ($entity instanceof FieldableEntityInterface) {
if ($entity instanceof NodeInterface &&
in_array($entity->getType(), ['подкаст','видео','пост'])) {
автоматическиAddToEntityqueue($entity);
}
}
}
функция автоматическиAddToEntityqueue (EntityInterface $entity) {
$entity_queue_type_mapping = массив(
'подкаст' => 'все_остальное_подкаст',
'видео' => 'все_остальное_видео',
'сообщение' => 'все_остальное_сообщение'
);
foreach ($entity_queue_type_mapping as $type => $entityqueue_id) {
if ($entity instanceof NodeInterface && $type == $entity->getType()) {
/** @var \Drupal\entityqueue\EntitySubqueueInterface $subqueue */
$subqueue = EntitySubqueue::load($entityqueue_id);
если (method_exists($subqueue, 'addItem')) {
$subqueue->addItem($entity)->save();
умереть();
}
}
}
}