
Clone the end-of-course Drupal code from the Learning Drupal as a framework repository, then install dependencies and set up a local site to explore the custom entity offers.
Learn to create dynamic menu links in Drupal 8-10 using menu plugins, including authenticated-only links, dynamic counts of offers, and caching considerations for performance.
Learn to build a dynamic bidding block for a Drupal 8–10 offer entity using dependency injection, a block plugin, and server-side validation for a billing form.
Learn to enhance layout in a Drupal module by loading a global CSS with a second library via page attachments and adding body classes for the offer detail view.
Create a code-only bid entity in Drupal by defining a content entity module with owner and offer references, a bit amount, and revision support, powered by the Drupal Entity API.
Learn to save custom entity values on form submission by adding a hidden offer ID, using a bit entity with amount and user ID as a reference, and saving it.
Add server-side validation in Drupal to enforce the current highest bid on an offer by querying highest bids, loading offer data, and validating the submitted bid in the bidding form.
Extend entity teasers with dynamic variables in get price amount to reflect the offer’s highest bid, minimum price, and promo batch status.
Explore the entity validation API in Drupal to enforce constraints on saving entities, using an all fields required constraint and validator to prevent empty values from being saved.
Master rendering dynamic data with Drupal render arrays and tables in a block, using the request stack to show the current offer's bidding table via the renderer service.
Integrate the core revisioning system into the bidding process to raise a bid, enabling bid updates as revisions with a revision history, log messages, and timestamps in Drupal.
Import seed data into a Drupal platform using a data generator and a custom command to create users, offers, and bids, then clear caches and review seeded content with Drush.
Add a delete form for the bit entity and a delete link from the offer detail; use a core Ajax dialog to stay on the page and enforce owner-only deletion.
by hooking into offer updates to notify bidders when an offer expires, implementing user notifications on transition events in drupal eight to ten with a notification entity and a view.
Learn to update a Drupal view with an ajax callback to delete, insert, or update records without refreshing the page, using ajax responses and view refresh triggers.
Learn how to implement pre delete in a custom offer entity to cascade delete related bits and notification entities, ensuring no orphaned data and a clean database.
Explore the Drupal caching API to implement complex caching for entities and blocks using cache tags, cache contexts, and max age for precise invalidation.
Learn how Drupal dynamic cache operates on fuse listings and offer views, including entity-level invalidation, hits and misses, and time-based caching strategies to optimize performance.
Cache a custom bidding table block on a Drupal entity page per page using cache tags and contexts, and invalidate caches when new bids are added or the offer updates.
Explore cacheable dependencies in render arrays to control caching with cache tags, cache context, and max age, enabling per-user and configuration-driven invalidation across controllers, blocks, and render results.
Invalidate a referenced offer entity's cache when saving or deleting a bit by adding post save and post delete logic and using Drupal core cache invalidation.
Learn how to cache menu items with a custom cache tag, using per-user cache context and targeted invalidation on offer entity save and delete.
Learn to implement Drupal middleware to create an HTTP filter that redirects users after login, using the middleware API, Symfony's HTTP kernel, and a stack-based login redirect service.
Customize the user registration in Drupal using a route subscriber to replace the core register form with a custom registration form, validating email, username, and password, and log in.
Wraps up a Drupal 8–10 advanced module development course with code explorations, updates toward Drupal ten, and notes on user profiles, view modes, redirects to edit, and event subscribers.
[Please read the table of contents first! Also the prerequisites are important]
In this hands-on course, an offer software where users are able to create offers and place bids will be created. The course builds further on the Udemy course "Drupal 8 & 9 module development: start with custom entities" but can be taken individually as well. Please read the table of contents to know what to expect!
Start Code and end code available, PDF with text per chapter
This is the best resource for custom module development with Drupal 8, 9, or 10.
Advanced topics like custom entities, entity forms, access control, events, caching, workflows, and many more are discussed while building actual software platform
After the course, you’ll be able to build robust and scalable software solutions of many kinds.
Stef Van Looveren has more than 10 years of expertise with Drupal.
I’ve been around in the drupal ecosystem for ten years and have supported in many ways: code contributing, blogging, sharing solutions on DrupalAnswers, and attending conferences. With this course, I share almost all of the knowledge I’ve built up so far since using Drupal 8 and 9.
My message is: "It struck me that there are so few good learning paths for drupal. With this course, I try to fill the gap. I gave it my best and I hope you will enjoy it!"