You can define menu in adminCP in file Install.php
Install.php
protected function setOthers()
{
$this->admincp_menu = [
"Manage Campaigns" => "betterads",
"Add Placement" => "betterads.addplacement",
"Manage Placements" => "betterads.placement",
"Manage Invoice" => "betterads.invoice",
"Manage Sponsorships" => "betterads.sponsor",
];//Do not put admincp here
$this->admincp_route = 'admincp.betterads';//must be begun with admincp
}
On start.php
start.php
Phpfox_Module::instance()->addComponentNames('controller', [
'betterads.admincp.add' => '\Apps\phpFox_BetterAds\Controller\Admin\AddController',
'betterads.admincp.index' => '\Apps\phpFox_BetterAds\Controller\Admin\IndexController',
'betterads.admincp.addplacement' => '\Apps\phpFox_BetterAds\Controller\Admin\AddPlacementController',
'betterads.admincp.invoice' => '\Apps\phpFox_BetterAds\Controller\Admin\InvoiceController',
'betterads.admincp.placement' => '\Apps\phpFox_BetterAds\Controller\Admin\PlacementController',
'betterads.admincp.sponsor' => '\Apps\phpFox_BetterAds\Controller\Admin\SponsorController',
])
->addTemplateDirs([
'betterads' => PHPFOX_DIR_SITE_APPS . 'phpFox_BetterAds' . PHPFOX_DS . 'views',
])->addAliasNames('betterads', 'phpFox_BetterAds');
group('/betterads/admincp', function () {
route('/', 'betterads.admincp.index');
route('/add', 'betterads.admincp.add');
route('/addplacement/*', 'betterads.admincp.addplacement');
route('/placement', 'betterads.admincp.placement');
route('/invoice', 'betterads.admincp.invoice');
route('/sponsor', 'betterads.admincp.sponsor');
});
And then, we add 6 controllers file and 6 view files.
Path of 6 controller files:
Apps\phpFox_BetterAds\Controller\Admin\AddController.php
Apps\phpFox_BetterAds\Controller\Admin\InvoiceController.php
Apps\phpFox_BetterAds\Controller\Admin\PlacementController.php
Apps\phpFox_BetterAds\Controller\Admin\SponsorController.php
Apps\phpFox_BetterAds\Controller\Admin\AddPlacementController.php
Apps\phpFox_BetterAds\Controller\Admin\IndexController.php
Path of 6 view files
- PF.Site/Apps/phpFox_BetterAds/views/controller/admincp/add.html.php
- PF.Site/Apps/phpFox_BetterAds/views/controller/admincp/addplacement.html.php
- PF.Site/Apps/phpFox_BetterAds/views/controller/admincp/index.html.php
- PF.Site/Apps/phpFox_BetterAds/views/controller/admincp/invoice.html.php
- PF.Site/Apps/phpFox_BetterAds/views/controller/admincp/placement.html.php
- PF.Site/Apps/phpFox_BetterAds/views/controller/admincp/sponsor.html.php
Sample structure of a controller file
AddController.php
<?php
namespace Apps\phpFox_BetterAds\Controller\Admin;
use Phpfox;
use Admincp_Component_Controller_App_Index;
use Phpfox_Plugin;
defined('PHPFOX') or exit('NO DICE!');
/**
* Class AddController
* @author Neil <neil@phpfox.com>
* @package Apps\phpFox_BetterAds\Controller\Admin
*/
class AddController extends Admincp_Component_Controller_App_Index
{
public function process()
{
parent::process();
//Put your code here
}
public function clean()
{
(($sPlugin = Phpfox_Plugin::get('betterads.component_controller_admincp_add_clean')) ? eval($sPlugin) : false);
}
}