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 Opendelight 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
- Controller name is
mycontroller.phpif it is located in the application root directory.
- Controller name is
test/mycontroller.phpif it is located inside the directory
testlocated in the application root directory.
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
Please note that you already get one controller when you install the Opendelight -
index.phpis 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.phpbe made its Sign In controller.
What Does A Controller Do in the Opendelight?
- Declares special PHP environment setting, if any (these are particularly
- Starts Session with the line
$_CTRID. This will be the ctrid field value at
*od_controllertable for the corresponding controller file.
- Includes the file
load.delight.php. This act will instantiate three Delight objects:
$USER(if it is private controller)
- Calls BL based on application instance (
$APP->ID), and loads data for like
- 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).