Încerc să adaug automat un articol la o coadă secundară la salvare. Și din anumite motive, funcționează doar dacă includ a muri()
după aceea.
Acest lucru adaugă noul nod la coadă
funcția custom_module_entity_insert(EntityInterface $entity) {
...
$subcoada = EntitySubqueue::load($entityqueue_id);
$subcoada->addItem($entity)->save();
a muri();
}
Acest lucru NU adaugă noul nod la coadă
funcția custom_module_entity_insert(EntityInterface $entity) {
...
$subcoada = EntitySubqueue::load($entityqueue_id);
$subcoada->addItem($entity)->save();
}
Am încercat să pun declarații de somn și nu reușesc să funcționeze fără a muri()
, care rupe pagina după salvare, evident. Nu există mesaje utile în jurnalul de erori. Elementul se salvează, pur și simplu nu este adăugat la coadă fără a muri()
.
Ai vreo idee?
Aceasta este funcția mea de lucru (și sparge pagina)
/**
* Implementează hook_entity_insert().
*/
funcția custom_module_entity_insert(EntityInterface $entity) {
// Vă faceți griji doar pentru entitățile care pot fi câmpate.
if ($entity instanceof FieldableEntityInterface) {
if ($entity instanceof NodeInterface &&
in_array($entity->getType(), ['podcast','video','post'])) {
automatAddToEntityqueue($entity);
}
}
}
funcția automatAddToEntityqueue(EntityInterface $entity) {
$entity_queue_type_mapping = array(
'podcast' => 'totul_altul_podcast',
'video' => 'totul_altfel_video',
'post' => 'toate_altele_postări'
);
foreach ($entity_queue_type_mapping ca $type => $entityqueue_id) {
if ($entity instanceof NodeInterface && $type == $entity->getType()) {
/** @var \Drupal\entityqueue\EntitySubqueueInterface $subqueue */
$subcoada = EntitySubqueue::load($entityqueue_id);
if (method_exists($subqueue, 'addItem')) {
$subcoada->addItem($entity)->save();
a muri();
}
}
}
}