i_thought_i_was_smart
i_thought_i_was_smart

Reputation: 168

Sub-routes with Phalcon

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

Answers (1)

jodator
jodator

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

Related Questions