与Phalcon的子路线

时间:2014-08-10 20:15:16

标签: php routes phalcon phalcon-routing

我在使用Phalcon扩展我想要访问的某些网址时遇到了一些麻烦。现在我使用单个模块设置(引用here)。如果我想访问类似的内容,这非常有用:

mysite.com/foo/start
mysite.com/bar/start

但我想做的是扩展这个,所以我可以有类似的东西:

mysite.com/foo/baz/start
mysite.com/bar/baz/start

目前,对于我的单模块设置,我在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

我有一个像这样的目录结构:

app
- controllers
    - fooController.php
    - barController.php
- models
- views
    - foo
    -bar

我不太确定最好的方法是什么。我可以将网站迁移到多模块设置,但我想知道是否有办法做到这一点"按原样#34;。主要问题似乎是扩展" baz"将出现多个路线。任何反馈都会非常有帮助!

1 个答案:

答案 0 :(得分:1)

我会使用FooController.php(带有FooController类名),这样你就不会遇到像unix一样的操作系统的麻烦。

您可以在服务文件中使用custom routesdocs)(如果是您的设置,则使用index.php)

示例:

$router = new \Phalcon\Mvc\Router();
//Define a route
$router->add(
    "/foo/baz/:action",
    array(
        "controller" => "Foo",
        "action"     => "1",
    )
);

$router = new \Phalcon\Mvc\Router();
//Define a route
$router->add(
    "/foo/baz/start",
    array(
        "controller" => "foo",
        "action"     => "start",
    )
);

此外,您可以在控制器中设置bazAction,并将'start'作为参数。

Bar控制器的方式相同。