我在使用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"将出现多个路线。任何反馈都会非常有帮助!
答案 0 :(得分: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",
)
);
此外,您可以在控制器中设置bazAction
,并将'start'
作为参数。
Bar
控制器的方式相同。