CakePHP: organise controllers in subfolders
-
27-10-2019 - |
Question
Is it possible in CakePHP to organise controllers (and models) in subfolders? Thanks.
Solution
Yes you can, but it is deprecated. See the discussion here. The last post on this page describes how to do it in the bootstrap.
OTHER TIPS
It's not deprecated at all. You can accomplish this using the App:build and point to your subfolders. For example, if you want to put all of your Twitter models in Model/Twitter to keep your code organized, you can add the following to the bootstrap.php
:
App::build(array(
'Model' => array(APP . 'Model' . DS . 'Twitter' . DS),
));
Now, any model file you put in Model/Twitter will be available when you call it.
See more here: http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#App::build
For those of you looking for a CakePhp3 version of this answer here is a link to the routing documentation. Use router prefixing that matches your controller sub-namespaces / directory structure.
http://book.cakephp.org/3.0/en/development/routing.html#prefix-routing
In CakePHP 3 you can define additional class paths in your composer.json (see http://book.cakephp.org/3.0/en/development/configuration.html#additional-class-paths)
Btw if you want to organize your template files in subfolders you have to add their paths in your app.php at App.paths
http://book.cakephp.org/3.0/en/development/configuration.html#general-configuration
Just in case someone else is searching for this piece of information... ;)