Drupal user
Fórum
Drupal version

Ahoj opět se hlásím o slovo :-) snad nejsem moc otravná... potřebovala bych vyřešit situaci když se provádí aktualizace objednávky a snažím se tomu zabránit pokud nebudou splněny určité podmínky tzn. neprovede se u ní žádná změna ani se nezavolají žádné rules. v podstatě potřebuji stopnout její jakékoliv zprocesování.

Potřebuji to udělat na úrovni kódu tak jsem začala uvažovat o "hook_entity_presave", ale netuším co v objektu objednávky nastavit a zda je to vhodné místo na této úrovni.

Nemůžu použít nic na úrovni submit nebo validator handleru formuláře, jelikož objednávka je zpracovávána bez použití formuláře tzn. někde se provede její načtení přidá se do jejích vlastností položka $order->prevent_update = 1; v hook_entity_presave je tato vlastnost přístupná a tak jsem si myslela, že na základě toho pak jen nastavím nějaký příznak v objednávce, který drupalu řekne stop a s danou objednávkou nic neudělá.

Našla jsem toto:

https://drupal.stackexchange.com/questions/150947/how-to-run-commerce-order-save-without-triggering-any-rules

kde navrhují:

override the entity controller class used for commerce_product (which you could do with hook_entity_info_alter()), and re-implement its save() method so it doesn't invoke the entity hooks.

Další věc mě napadla přidat do kontroleru "CommerceOrderEntityController" na začátek metody save (vím, že toto by se nemělo):

<?php

if (isset($order->prevent_update)) {

  return FALSE;

}

?>

Dík za nápady

K.

Přidat komentář

Ktorá rieka preteká Bratislavou?