diff --git a/app/Config/Routing.php b/app/Config/Routing.php index 8d3c773157cf..c0234da8df91 100644 --- a/app/Config/Routing.php +++ b/app/Config/Routing.php @@ -63,13 +63,12 @@ class Routing extends BaseRouting /** * Sets the class/method that should be called if routing doesn't - * find a match. It can be either a closure or the controller/method - * name exactly like a route is defined: Users::index + * find a match. It can be the controller/method name like: Users::index * * This setting is passed to the Router class and handled there. * * If you want to use a closure, you will have to set it in the - * class constructor or the routes file by calling: + * routes file by calling: * * $routes->set404Override(function() { * // Do something here diff --git a/system/Config/Routing.php b/system/Config/Routing.php index e6d25138f8f0..5f5d9db620a4 100644 --- a/system/Config/Routing.php +++ b/system/Config/Routing.php @@ -61,13 +61,12 @@ class Routing extends BaseConfig /** * Sets the class/method that should be called if routing doesn't - * find a match. It can be either a closure or the controller/method - * name exactly like a route is defined: Users::index + * find a match. It can be the controller/method name like: Users::index * * This setting is passed to the Router class and handled there. * * If you want to use a closure, you will have to set it in the - * class constructor or the routes file by calling: + * routes file by calling: * * $routes->set404Override(function() { * // Do something here diff --git a/user_guide_src/source/incoming/routing.rst b/user_guide_src/source/incoming/routing.rst index c9bd1e9eeb39..a9aa28602822 100644 --- a/user_guide_src/source/incoming/routing.rst +++ b/user_guide_src/source/incoming/routing.rst @@ -667,15 +667,19 @@ to only those defined by you, by setting the ``$autoRoute`` property to false: 404 Override ============ -When a page is not found that matches the current URI, the system will show a generic 404 view. You can change -what happens by specifying an action to happen with the ``set404Override()`` method. The value can be either -a valid class/method pair, just like you would show in any route, or a Closure: +When a page is not found that matches the current URI, the system will show a +generic 404 view. Using the ``$override404`` property within the routing config +file, you can define controller class/method for 404 routes. .. literalinclude:: routing/051.php -Using the ``$override404`` property within the routing config file, you can use closures. Defining the override in the Routing file is restricted to class/method pairs. +You can also change what happens by specifying an action to happen with the +``set404Override()`` method in Routes config file. The value can be either a +valid class/method pair, or a Closure: -.. note:: The ``set404Override()`` method does not change the Response status code to ``404``. +.. literalinclude:: routing/069.php + +.. note:: The 404 Override feature does not change the Response status code to ``404``. If you don't set the status code in the controller you set, the default status code ``200`` will be returned. See :php:meth:`CodeIgniter\\HTTP\\Response::setStatusCode()` for information on how to set the status code. diff --git a/user_guide_src/source/incoming/routing/051.php b/user_guide_src/source/incoming/routing/051.php index 8c598c400b03..33852c87e021 100644 --- a/user_guide_src/source/incoming/routing/051.php +++ b/user_guide_src/source/incoming/routing/051.php @@ -10,12 +10,3 @@ class Routing extends BaseRouting public ?string $override404 = 'App\Errors::show404'; // ... } - -// In app/Config/Routes.php -// Would execute the show404 method of the App\Errors class -$routes->set404Override('App\Errors::show404'); - -// Will display a custom view -$routes->set404Override(static function () { - echo view('my_errors/not_found.html'); -}); diff --git a/user_guide_src/source/incoming/routing/069.php b/user_guide_src/source/incoming/routing/069.php new file mode 100644 index 000000000000..991aa5c57b74 --- /dev/null +++ b/user_guide_src/source/incoming/routing/069.php @@ -0,0 +1,10 @@ +set404Override('App\Errors::show404'); + +// Will display a custom view +$routes->set404Override(static function () { + echo view('my_errors/not_found.html'); +});