We're going to create an application from scratch. Every Jelix application has a
name : the name of its directory. We will call our application "news.org".
We suppose that you have installed PHP 7 (or at least 5.6), PHP-CLI,
and [[https://getcomposer.org/doc/00-intro.md|Composer]].
===== Download =====
Create a directory for your project, initialise a composer.json file, and install
the package @@jelix/jelix-standard@@
mkdir projects
cd projects
composer init
composer require "jelix/jelix-standard:^1.7.0"
At the end, you have a new directory @@vendor@@, containing the source code
of Jelix and other packages.
===== Discovering scripts of Jelix =====
Jelix is provided with several scripts to execute in a command line, which makes
easy the creation and the modification of different files of a Jelix application.
The first one, @@vendor/bin/create-jelix-app@@, allows to create a Jelix application.
You have to give to it the new directory of the application
Example:
vendor/bin/create-jelix-app /path/to/the/new/directory/of/the/app
Two other scripts, @@dev.php@@ and @@console.php@@, are available inside the
application. @@dev.php@@ helps the developeur to construct his application,
whereas @@console.php@@ helps the administrator to manage the application data
and other things.
===== Creation of an application =====
Let's begin to create our application. Go into the @@projects@@ directory and type:
vendor/bin/create-jelix-app --no-default-module news.org
A number of questions are asked to you, to help you to configure the project.
For this tutorial, let's keep the default answer, except for the question
"How to install jelix-www files?", for which you choose "copy".
The web site of your company >
The licence of your application and modules (default is 'All rights reserved') >
The url to the licence if any >
Copyright on your application and modules (default is '2019 news.org') >
The suffix of your modules id (default is '@news.org') >
The creator name (your name for example) (default is 'news.org') >
The email of the creator >
How to install jelix-www files?
copy: will be copied into the www/ directory
filelink: a symbolic link into the www/ directory will point to the lib/jelix-www directory
vhost: you will configure your web server to set an alias to the lib/jelix-www directory
(default is '')
[0] copy
[1] vhost
[2] filelink
> 0
Web path to the content of lib/jelix-www? (default is 'jelix/') >
Do you want to store sessions into a database? ( 'y' or 'n', default is n) >
Do you want to store sessions as files into a specific directory? ( 'y' or 'n', default is n) >
As a result, you'll get an @@F@example/@@ directory, at the same level as the @@F@vendor/@@ directory. Its content will be :
news.org/
app/
system/ the configuration files of your application
responses/ custom response object for the application (views)
themes/ the different possible themes in your application
overloads/ will contain the different files that you will redefine, from modules.
application.init.php the file to initialize the jelix environment and the application
console.php the script to launch some commands to manage the application
dev.php the script to launch some commands to develop
modules/ the modules of your application
plugins/ the plugins of your application
temp/ It contains all cache and temporary file generated by jelix.
var/
config/ the configuration files of your application, that are
specific to the environment and the server
log/ the log files
www/ the root directory of the site (public files)
===== Creation of a module =====
Note that we used the option @@--no-default-module@@ with the script
@@c@create-jelix-app@@. Without this option, the script create a module
having the same name of the application (so @@F@news.org/modules/news.org@@).
But in this tutorial, we want to create ourselves the module, to learn
the framework.
Now we have a skeleton of application, we have to create a module,
because for the moment, our application can do nothing since there is no defined
action. Indeed, we will have to declare and implement some actions. An action
can display a page, save data of a form, response as a webservice, etc.
The actions are grouped into distinct modules according to the domain or the
function to which they are linked. We will for example create a module which
will group the actions meant to display and manage the news. To do that, you
have the @@c@module:create@@ command, which takes as parameter the name of the module
that will be created. Use the @@dev.php@@ script inside @@new.org/@@ directory.
php dev.php module:create news --default-module
By typing this command, Jelix has created for you a module named @@news@@ with
all its tree structure and some mandatory files :
news.org/modules/news/
├── classes your business classes and services
├── controllers your controllers
│ └── default.classic.php a controller
├── daos the object-relationnal mapping files
├── forms forms files
├── install
│ ├── configure.php script to configure the module
│ └── install.php script to install the module
├── locales locale files ("properties" files)
│ ├── en_US
│ └── fr_FR
├── module.xml file describing the identity of the module
├── templates templates of the module
├── urls.xml urls mapping
└── zones objects processing specific zones in a page
We are now ready to define the actions.