Naming Conventions in CakePHP
First, you should definitly read cakephp-conventions.html. This should clarify the basics.
Bottom line: Controllers are plural, their tables plural as well, the entity is singular.
Class names and URLs
It is recommended to use the "DashedRoute" (which will tbe default in 3.1 anyway).With a basic example, we take a closer look at the naming scheme in URLs:
/example-plugin/example-pages/action-name/passed-param?limit=1
This URL includes already all basic elements: A controller "ExamplePages" in the "ExamplePlugin" with an action "actionName"
as well as a passed param "passed-param" and query string "limit" with a value of "1".
If the controller had a model, its table class would be "ExamplePages" and the entity class "ExamplePage". The table would be "example_pages".
If you also use prefix routing (usually with the prefix "admin") as well, this could be the URL to the the same controller in that plugin:
/admin/example-plugin/example-pages/action-name/passed-param
What you need to understand is, that the class names as well as the namespaces like plugins are CamelCase, but the URL representation is always lowercase-underscored (dashed) due to the "DashedRoute" class.
Coming from 2.x
If you upgrade a 2.x app, you can stick to the "InflectedRoute" however for BC and to stay URL-consistent for SEO reasons./example_plugin/example_pages/action_name/passed_param?limit=1Would then resolve into a controller "ExamplePages" in the "ExamplePlugin" with an action "action_name" (!) as well as a passed param "passed_param" and query string "limit" with a value of "1".