A Controller is a PHP file that takes the HTTP request and manages the execution path of the application (instance of the application) at the server-side. An application can have more than one controller file when required. A Controller file can define public URLs or private URLs (i.e., password-protected URLs) as the situations demand. However, a Controller file cannot have both public and private URLs, and you need separate Controller files for this.

A Controller file is defined and edited by the Batoi Framework IDE and requires the developer to specify the controller file name. The Controller file name can be prepended by path from the root of the application folder if it is located inside an inner directory, but never include any slash in the beginning. For example

  1. Controller name is mycontroller.php if it is located in the application root directory.
  2. Controller name is test/mycontroller.php if it is located inside the directory test located in the application root directory.

NOTE:

We have decided to use the name as mycontroller.php in the above example, but you can name anything. Please note further that you can also choose other file extensions for your controller file if you are ready to implement that as a PHP script through your apache configuration or .htaccess)

Please note that you already get one controller when you install the Batoi Framework - index.php:

  1. index.php is the default controller of application as anybody will access this file when they go to. In case of a public website, this controller can be made public. In case of a web application, this controller can be made private, and sign.php be made its Sign In controller.

What Does A Controller Do in the Batoi Framework?

  1. Declares special PHP environment setting, if any (these are particularly php.ini directive(s))
  2. Starts Session with the line session_start();
  3. Defines $_CTRID. This will be the ctrid field value at *od_controller table for the corresponding controller file.
  4. Includes the file load.delight.php. This act will instantiate three Delight objects: $DB, $APP and $USER (if it is private controller)
  5. Calls BL based on application instance ($APP->ID), and loads data for like $APP->VIEWPARTS, $APP->$FORMRULES and $APP->$PAGEVARS
  6. Finally, calls viewparts as defined for the application instance (in $APP->VIEWPARTS). If no view part is defined for a particular instance, data arrays as obtained from BL calls, are sent back to UI by the Controller (usual in case of AJAX calls from UI).