Reputation: 168
I'm having some trouble extending some of the URLs that I want to access with Phalcon. Right now I'm using a single module setup (as referenced here). This works great if I want to access something like:
mysite.com/foo/start
mysite.com/bar/start
But what I would like to do is extend this so I can have something like:
mysite.com/foo/baz/start
mysite.com/bar/baz/start
Currently, for my single-module setup, I have the following in my index.php:
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
'../app/controllers/',
'../app/models/'
))->register();
$di->set('view', function(){
$view = new \Phalcon\Mvc\View();
$view->setViewsDir('../app/views/');
$view->registerEngines(array(
".volt" => 'volt'
));
return $view;
});
.... other stuff
And I have a directory structure like so:
app
- controllers
- fooController.php
- barController.php
- models
- views
- foo
-bar
I'm not quite sure what the best way to go about this is. I could migrate the site to a multiple-module setup, but I was wondering if there was a way to do this "as is". The main problem seems that the extension "baz" will appear for multiple routes. Any feedback would be extremely helpful!
Upvotes: 0
Views: 497
Reputation: 2465
I would use FooController.php (with FooController class name) so you will not have troubles with unix-like OS's.
You can use custom routes (docs) in your services file (or in index.php if that's your setup)
Example:
$router = new \Phalcon\Mvc\Router();
//Define a route
$router->add(
"/foo/baz/:action",
array(
"controller" => "Foo",
"action" => "1",
)
);
or
$router = new \Phalcon\Mvc\Router();
//Define a route
$router->add(
"/foo/baz/start",
array(
"controller" => "foo",
"action" => "start",
)
);
Also you can make bazAction
in you controllers that takes 'start'
as parameter.
The same way for Bar
controller.
Upvotes: 1