【问题标题】:Sub-routes with Phalcon使用 Phalcon 的子路线
【发布时间】:2014-10-03 15:38:08
【问题描述】:

我在扩展一些我想用 Phalcon 访问的 URL 时遇到了一些问题。现在我正在使用单个模块设置(参考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

我不太确定解决此问题的最佳方法是什么。我可以将站点迁移到多模块设置,但我想知道是否有办法“按原样”执行此操作。主要问题似乎是多个路由会出现扩展“baz”。任何反馈都会非常有帮助!

【问题讨论】:

    标签: php routes phalcon phalcon-routing


    【解决方案1】:

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

    您可以在您的服务文件中使用custom routes (docs)(如果这是您的设置,也可以在 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",
        )
    );
    

    您也可以在以'start' 作为参数的控制器中创建bazAction

    Bar 控制器的方式相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2017-08-18
      • 2014-07-10
      • 2013-07-29
      • 2015-01-13
      • 1970-01-01
      相关资源
      最近更新 更多