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

From templates, you have to use the helper Kanboard\Helper\Url.

<?= $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:


HTML output when URL rewriting is not enabled:


From a controller, if you need to perform a redirection:

$this->url->to('mycontroller', 'myaction', array('plugin' => 'myplugin'));