Custom Routes
When URL rewriting is enabled, you can define custom routes from your plugins.
Define new routes
Routes are handled by the class Kanboard\Core\Http\Route
.
New routes can be added by using the method addRoute($path, $controller, $action, $plugin)
, here an example:
$this->route->addRoute('/my/custom/route', 'myController', 'myAction', 'myplugin');
When the end-user go to the URL /my/custom/route
, the method Kanboard\Plugin\Myplugin\Controller\MyController::myAction()
will be executed.
The first character of the controller and the plugin name will converted in uppercase with the function ucfirst()
.
You can also define routes with variables:
$this->route->addRoute('/my/route/:my_variable', 'myController', 'myAction', 'myplugin');
The colon prefix :
, define a variable. For example :my_variable
declare a new variable named my_variable
.
To fetch the value of the variable you can use the method getStringParam()
or getIntegerParam()
from the class Kanboard\Core\Http\Request
:
If we have the URL /my/route/foobar
, the value of my_variable
is foobar
:
$this->request->getStringParam('my_variable'); // Return foobar
Generate links based on the routing table
From templates, you have to use the helper Kanboard\Helper\Url
.
Generate a HTML link
<?= $this->url->link('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?>
Will generate this HTML:
<a href="/my/custom/route">My link</a>
Generate only the attribute href
:
<?= $this->url->href('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?>
HTML output:
/my/custom/route
HTML output when URL rewriting is not enabled:
?controller=mycontroller&action=myaction&plugin=myplugin
Generate redirect link:
From a controller, if you need to perform a redirection:
$this->url->to('mycontroller', 'myaction', array('plugin' => 'myplugin'));
Generates:
?controller=mycontroller&action=myaction&plugin=myplugin