How to throw 404 error in Drupal module?
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
- drupal_not_found() documentation for Drupal 6.
- drupal_not_found() documentation for Drupal 7.
- NotFoundHttpException documentation for Drupal 8.
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
Related videos on Youtube
webbear
Updated on June 16, 2020Comments
-
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 almost 12 yearsThank you. Exactly that I need.
-
rpayanm about 9 yearsFor drupal 8
throw new NotFoundHttpException();
see drupal.org/node/1616360 -
No Sssweat about 5 yearsYou need the name space,
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
-
Kiee over 4 yearsIn 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 over 3 yearsIn Drupal 7, page callback functions wanting to report a "page not found" message should return MENU_NOT_FOUND instead of calling drupal_not_found().