|app||This directory structure contains the application files and folders of your site. The directory is auto-bootstrapped with PHPLucidFrame environment.|
The helpers mapping to the system core helpers should be placed in this directory
directory. They are auto-loaded. For example, the custom validation helper
|app/cmd||The console command implementation should be placed in this directory. They are
auto-loaded. For example, if you implement a custom command file
|app/entity||This directory should be used to place the files which contains the business log functions or classes. They usually do the direct operations to the database layer.|
The directory can include the site template files and site configuration file.
|assets||This directory contains all client resources such css, images, and js.|
|assets/css||This directory contains the application CSS files.|
|assets/images||This directory contains the images of the application.|
|business||[Deprecated] This directory is deprecated and it is replaced by the directory
|db||This directory contains the database-related stuffs such as schema files, seeding files, etc.|
|db/build||This directory has the built schema definitions and it is ignored from version control.|
|db/generated||This directory has the generated sql dump files and it is ignored from version control.|
|files||This directory contains the files and folders of your site uploaded data. For example, sessions, photos, cache, etc.|
This directory should be used to place
This directory should contain sub-directories to place custom multi-lingual content files. For example,
This directory structure contains the settings and configuration files of the application.
The following files are overwritable or inherited by the
|lib||This directory is reserved for core library files. Custom and overwritten helpers should
be placed in their own subdirectory of the
|tests||This directory should contain all test files. The directory is auto-bootstrapped with PHPLucidFrame environment.|
|vendors||This directory should be used to place downloaded and custom modules and third party libraries which are common to all sites.|
PHPLucidFrame encourages a uniform and structural page organization. In brief, a page in LucidFrame is represented by a folder containing at least two files:
view.php. As an example, you can see the directory
/app/home/ of the LucidFrame release you downloaded.
/path_to_webserver_document_root /phplucidframe /app /home |-- action.php |-- index.php |-- query.php |-- view.php
- The index.php (required) serves as the front controller for the requested page, initializing the base resources needed to run the page.
- The action.php (optional) handles form submission. It should perform form validation, create, update, delete of data manipulation to database. By default, a form is initiated for AJAX and
action.phpis automatically invoked if the action attribute is not given in the
- The query.php (optional) should retrieve and process data from database and make it available to view.php.
- The view.php (required) is a visual output representation to user using data provided by query.php. It generally should contain HTML between
- The list.php (optional) is a server page requested by AJAX, which retrieves data and renders HTML to the client. It is normally implemented for listing with pagination.
PHPLucidFrame is not bound to any specific directory structure, these are simply a baseline for you to work from.
This illustration demonstrates a request to
By default, PHPLucidFrame has two template files -
footer.php. They will have to include in every
view.php. Some developers may not want to have header and footer templates separately and not want to include the files in all views. They usually create a site layout file.
Since version 1.14, PHPLucidFrame provides a new feature to enable/disable layout mode globally or for a particular page.
Create a Layout File¶
Create your layout file in
/app/inc/tpl/. Default layout file name is
<?php include _view(); ?> has to be called in the layout file. Here is an example layout file content:
<!DOCTYPE html> <html> <head> <title><?php echo _title(); ?></title> <?php include _i('inc/tpl/head.php'); ?> </head> <body> <div id="wrapper"> <div id="page-container"> <div id="header"> <div class="container clearfix"> <!-- header content --> </div> </div> <div id="page"> <div class="container"> <?php include _view(); ?> <!-- page view --> </div> <!-- .container --> </div> <!-- #page --> <div id="footer"> <div class="container"> <!-- footer content --> </div> </div> </div> <!-- #page-container --> </div> <!-- #wrapper --> </body> </html>
Enable Layout Mode globally¶
To enable layout mode globally, set true to
# $lc_layoutMode: Enable layout mode or not $lc_layoutMode = true; # $lc_layoutMode: Default layout file name $lc_layoutName = 'layout'; // layout.php
You can also configure
$lc_layoutName using a custom file name other than
layout.php. Now that you have enabled the layout mode globally,
view.php are automatically included for every page.
/app /home |-- action.php |-- index.php |-- query.php (this file will be automatically included when layout mode is enabled) |-- view.php (this file will be automatically included when layout mode is enabled)
Enable Layout Mode for a Page¶
Assuming that you have
$lc_layoutMode = false that makes layout mode disabled globally. If you want to enable it for a particular page. You can call
_cfg('layoutMode', true); at the top of
index.php of the page folder.
In addition, you can create a new layout for a particular page or a group of pages. You just need to call
_cfg('layoutName', 'another-layout-file-name'); for the pages. Check the example at
❖ PHPLucidFrame does not tie to any template system.
Savant is a powerful but lightweight object-oriented template system for PHP. Unlike other template systems, Savant by default does not compile your templates into PHP; instead, it uses PHP itself as its template language so you don’t need to learn a new markup system. You can easily integrate it into LucidFame.