Skip to content

Commit 655bd1d

Browse files
authored
Merge pull request #9129 from datamweb/docs-add-Retrieving-Controller-MethodNames
docs: add Getting Routing Information
2 parents 92337f2 + 0093929 commit 655bd1d

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

user_guide_src/source/incoming/routing.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,3 +1127,36 @@ You can specify the host in the request URL with the ``--host`` option:
11271127
.. code-block:: console
11281128
11291129
php spark routes --host accounts.example.com
1130+
1131+
Getting Routing Information
1132+
***************************
1133+
1134+
In CodeIgniter 4, understanding and managing routing information is crucial for handling HTTP requests effectively.
1135+
This involves retrieving details about the active controller and method, as well as the filters applied to a specific route.
1136+
Below, we explore how to access this routing information to assist in tasks such as logging, debugging, or implementing conditional logic.
1137+
1138+
Retrieving the Current Controller/Method Names
1139+
==============================================
1140+
1141+
In some cases, you might need to determine which controller and method have been triggered by the current HTTP request.
1142+
This can be useful for logging, debugging, or conditional logic based on the active controller method.
1143+
1144+
CodeIgniter 4 provides a simple way to access the current route's controller and method names using the ``Router`` class. Here is an example:
1145+
1146+
.. literalinclude:: routing/071.php
1147+
1148+
This functionality is particularly useful when you need to dynamically interact with your controller or log which method is handling a particular request.
1149+
1150+
Getting Active Filters for the Current Route
1151+
============================================
1152+
1153+
:doc:`Filters <filters>` are a powerful feature that enables you to perform operations such as authentication, logging, and security checks before or after processing HTTP requests.
1154+
To access the active filters for a specific route, you can use the :php:meth:`CodeIgniter\\Router\\Router::getFilters()` method from the ``Router`` class.
1155+
1156+
This method returns a list of filters that are currently active for the route being processed:
1157+
1158+
.. literalinclude:: routing/072.php
1159+
1160+
.. note:: The ``getFilters()`` method returns only the filters defined for the specific route.
1161+
It does not include global filters or those specified in the **app/Config/Filters.php** file.
1162+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
// Get the router instance.
4+
/** @var \CodeIgniter\Router\Router $router */
5+
$router = service('router');
6+
7+
// Retrieve the fully qualified class name of the controller handling the current request.
8+
$controller = $router->controllerName();
9+
10+
// Retrieve the method name being executed in the controller for the current request.
11+
$method = $router->methodName();
12+
13+
echo 'Current Controller: ' . $controller . '<br>';
14+
echo 'Current Method: ' . $method;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
// Get the router instance.
4+
/** @var \CodeIgniter\Router\Router $router */
5+
$router = service('router');
6+
$filters = $router->getFilters();
7+
8+
echo 'Active Filters for the Route: ' . implode(', ', $filters);

0 commit comments

Comments
 (0)