You can define menus 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 controller files and view files.
Path of these 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 these 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); } }