-1

I created a flag to flag the stores. I want when a user updates a store, the store is automatically flagged. The code below does not work and there is no error message.

I don't want to use the Rules module.

How do I flag the update store automatically?

use Drupal\flag\FlaggingInterface;
use Drupal\Core\Entity\ContentEntityBase;
use Drupal\user\Entity\User;
use Drupal\commerce_store\Entity\Store;
use Drupal\commerce_product\Entity\Product;
use Drupal\group\Entity\Group;
use Drupal\node\Entity\Node;
use Drupal\comment\Entity\Comment;

/**
 * Flag store.
 */
function admin_task_notify_commerce_store_update(Store $commerce_store) {

    $flag_id = 'report_store';
    $flag_service = \Drupal::service('flag');
    $flag = $flag_service->getFlagById($flag_id);
    $flag_service->flag($flag, $commerce_store);
  
}
12
  • Your codes matches the example from the FlagServiceInterface so that should work. Did you test if the function admin_task_notify_entity_update() is being called? Sep 16, 2020 at 19:53
  • @Neograph734 I updated the code for the question. What exactly should I put on ?
    – sdfff
    Sep 16, 2020 at 20:45
  • If you get no error and no result, are you sure that the function (I suppose hook_entity_update for custom module admin_tasks_notify) is called? Have you tested it with some other code to see if that works? Did you clear the cache? It might be unrelated to flag. (Besides a lot of those use statements are not needed for this code) Sep 16, 2020 at 20:51
  • @Neograph734 I don't know, because I'm new to the custom module. My module is here: git.drupalcode.org/sandbox/zenimagine-3170711/-/tree/main There are only 2 files and I just want to flag the created or updated entity.
    – sdfff
    Sep 16, 2020 at 21:22
  • 1
    Does this answer your question? How do I flag new user accounts or updated accounts? Sep 19, 2020 at 8:02

1 Answer 1

1

The code looks ok, and you confirm it works for nodes. Then I can only guess that the used flag_ids are wrong, the flag is not enabled for the given entity, or the user does not have permission to place the flag .

10
  • Everything is OK, the machine names are correct and the permissions too. The problem comes from my module. Only the nodes work. If I create a group, the user is flagged, why? git.drupalcode.org/sandbox/zenimagine-3170711/-/blob/main/…
    – sdfff
    Sep 17, 2020 at 17:47
  • It works for updating stores, but it doesn't work for creating stores. I want to be flagged automatically for creating and updating stores.
    – sdfff
    Sep 19, 2020 at 14:21
  • That was never part of the question. Please do not use comments for follow up questions. But you might try hook_entity_insert(). Sep 19, 2020 at 15:07
  • I have the same error as for the comments ` Message Error : Call to undefined method Drupal\commerce_store\Entity\Store::getType() dans admin_task_notify_commerce_store_insert() (/var/www/www-example-com/web/modules/custom/admin_task_notify/admin_task_notify.module ligne 33)` Here is my code pastebin.com/gqPAHzKA
    – sdfff
    Sep 19, 2020 at 20:50
  • 1
    You'll need to learn some basic debugging. Apparently stores do not have the getType() method, so you'll need something else. Dig into commerce store/src/entity/Store.php and see what you can use. Sep 19, 2020 at 21:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.