How to throw 404 error in Drupal module?
For Drupal 8+
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
// then
throw new NotFoundHttpException();
It is easy. These should take care of watchdog, HTTP 404 response code and other related things.
For Drupal 6 & 7
In your module's page callback, do: return drupal_not_found();
For Drupal 8
In the class::method()
referred to in the _controller
definition (i.e. the page callback or the method responsible for generating output for the request), do:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
References
- drupal_not_found() documentation for Drupal 6.
- drupal_not_found() documentation for Drupal 7.
- NotFoundHttpException documentation for Drupal 8.