Front-end entrance (tool pages)
- Home
- Developing modules
- Front-end entrance (tool pages)
A controller can provide methods to be used by tool pages; such controllers implement the FrontEndEntrance
interface.
The controller needs to be registered so that it's selectable for use on tool pages. The second argument is a human-friendly name which is displayed in the admin UI:
modules/MyModule/sprout_load.php
Register::frontEndController('SproutModules\\Karmabunny\\MyModule\\Controllers\\MyController', 'Cool thing which does stuff');
To add a tool page via the admin, you select the 'module' (which is actually the controller), and the 'option' (one of the elements of the array returned by _getEntranceArguments
).
The code for the controller itself should look something like this:
modules/MyModule/Controllers/MyController.php
class MyController extends Controller implements FrontEndEntrance { public function _getEntranceArguments() { return ['doTheThing' => 'Do the thing']; } public function entrance($argument) { $entrances = $this->_getEntranceArguments(); if (isset($entrances[$argument])) { Navigation::setPageNodeMatcher(new TreenodeRedirectMatcher($argument)); $this->$argument(); return; } // Failure Url::redirect('result/error'); } public function doTheThing() { // TODO: implement } }
The code in the entrance method can actually do whatever you want, but it's usually used to call internal methods or redirect elsewhere.
The Navigation::setPageNodeMatcher
call tells the rest of the system which part of the menu is active, to highlight in the sidebar, show breadcrumbs, etc.