A FatFreeFramework(f3) HMVC template
When you clone this repo make sure to run these commands to initialize and fetch the f3 framework:
git submodule init
git submodule update
Consider the following directory and file structure:
app/
+ main/
+ controllers/
- Controller.php (Default module controller)
> index()
> page2()
...
- Other.php (Additional controller)
> index()
> page2()
...
...
+ dict/ (LOCALES, optional)
- en.ini
- ru.ini
...
+ models/
- User.php
- Group.php
...
+ views/
- index.html
- page2.html
...
+ blog/
+ controllers/
- Controller.php (Default module controller)
> index()
> page2()
...
- Other.php (Additional controller)
> index()
> page2()
...
...
+ dict/ (LOCALES, optional)
- en.ini
- ru.ini
...
+ models/
- User.php
- Group.php
...
+ views/
- index.html
- page2.html
...
Lets assume this repo is sitting at the root of localhost http://localhost/
. The following table shows which controller and method is called per request.
URI | Controller Call |
---|---|
http://localhost/ | app/main/controllers/Controller.php > index() |
http://localhost/blog | app/blog/controllers/Controller.php > index() |
http://localhost/blog/page2 | app/blog/controllers/Controller.php > page2() |
http://localhost/blog/other | app/blog/controllers/Controller.php > other() |
http://localhost/blog/other/action | app/blog/controllers/Other.php > action() |
To add your own f3 configuration and routes add a config.ini
file in the root. The only configuration option this template uses is DefaultModule
. As the name implies this option will set the default module. For example if you want to use a module called landing
as the default module the config.ini
file should include:
[globals]
DefaultModule = landing
Note: The default controller for any module will always be Controller.php