/f3-hvmc

MVC for Fat Free Framework with Foundation included

Primary LanguagePHP

A FatFreeFramework(f3) HMVC template

When you clone this repo make sure to run this 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 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