HTML Output from BMO
If the module is requested as display=modulename, the page 'page.modulename.php' will be INCLUDED (this has not changed).
However, a significant change that you should be aware of is that you should never do any processing of POST/GET in the page.whatever.php file. The page is ONLY for displaying information, and should not contain any logic. A simple way to keep this distinction is to only write a stub for the page
<?php
// Pony Page.
// This gives you a shortcut to the 'class Ponies' defined in /var/www/html/admin/modules/ponies/Ponies.class.php
$pony = FreePBX::create()->Ponies();
// Do your display logic in the public function showPage in Ponies.
print $pony->showPage(); |
Use the BMO Hook 'doConfigPageInit($pagename)' to process any variables. This is guaranteed to be called before anything else, including other hooking modules, on a page load. Note that you do not need to explicitly say that you want to hook yourself, this is implied in every module.
class Ponies extends FreePBX_Helpers implements BMO {
public static $dbDefaults = array( 'bestpony' => 'Rainbow Dash' );
// This is unneeded. You never need to hook yourself.
public static function myConfigPageInits() { return array("ponies"); }
public function showPage() {
print "Best pony is ".$this->getConfig('bestpony'); // See the 'DB_Helper' documentation.
}
public function doConfigPageInit() {
// If you were doing a POST, you could catch it and..
// $this->setConfig('bestpony', $_REQUEST['bestpony']);
}
} |
Failing to create a 'public function doConfigPageInit()' will result in an error being printed at the top of the screen every time your module is loaded.