How to throw 404 error in Drupal module?

23,742

Solution 1

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

Solution 2

For Drupal 8

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
// then
throw new NotFoundHttpException();

Solution 3

MENU_NOT_FOUND should be returned in page callback functions.

Page callback functions wanting to report a "page not found" message should return MENU_NOT_FOUND instead of calling drupal_not_found(). — http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_not_found/7

Solution 4

Look into the drupal_add_http_header() function to play with the HTTP header attributes. Also make sure you stick this at the top of your module's code to make sure it executes first. Also, you might find this helpful. https://www.drupal.org/project/generate_errors

Share:
23,742

Related videos on Youtube

webbear
Author by

webbear

Updated on June 16, 2020

Comments

  • webbear
    webbear almost 4 years

    I need to throw 404 error in module. Or may be there are any possibility to set required option for menu hook?

  • webbear
    webbear almost 12 years
    Thank you. Exactly that I need.
  • rpayanm
    rpayanm about 9 years
    For drupal 8 throw new NotFoundHttpException(); see drupal.org/node/1616360
  • No Sssweat
    No Sssweat about 5 years
    You need the name space, throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpExceptio‌​n();
  • Kiee
    Kiee over 4 years
    In drupal 7, calling return drupal_not_found() results in white screen of death. function exists, display errors enabled, nothing outputted to apache error log file.
  • Juanmi Sosso
    Juanmi Sosso over 3 years
    In Drupal 7, page callback functions wanting to report a "page not found" message should return MENU_NOT_FOUND instead of calling drupal_not_found().