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'));
Generate:
?controller=mycontroller&action=myaction&plugin=myplugin