Phalcon中控制器的不同目录和命名空间

时间:2015-08-12 15:07:27

标签: model-view-controller phalcon

我希望能够构建一个小应用程序(例如基本登录MVC结构)并构建我的Phalcon项目,以便我可以将其放在一个文件夹中并调整config文件位。

E.g。我有一个基于Vokuro教程构建的基本登录应用程序。现在,不是将控制器复制到一个目录,模型到另一个目录等,以便将其部署到我现有的应用程序中,我想将其放入一个文件夹(例如app/extensions/security),然后调整我的主config / bootstrap,以便将UsersProfiles的请求定向到app/extensions/security/controllers中的控制器。

根据文件夹结构,所有内容都是命名空间,我当前的loader看起来像是:

$loader->registerNamespaces(array(
    'Me\Controllers' => $config->application->controllersDir,
    'Me\Models' => $config->application->modelsDir,
    'Me\Forms' => $config->application->formsDir,
    'Me' => $config->application->libraryDir,
    'Me\Security' => $config->application->extensionsDir . 'security/'
));

基本上 - 如何让Phalcon在app/controllers中查找某些控制器,在另一个目录中查找其他控制器(app/extensions/security/controllers)?

我不确定这是否得到充分解释 - 如果需要澄清,请告诉我。

修改

我通过将此添加到我的路线

来显示登录页面
$router->add('/session/:action', array(
    'namespace' => 'Me\Security\Controllers',
    'controller' => 'Session',
    'action' => 1
));

所以我想我会在app/extensions/security文件夹中创建一个路由文件,然后将其加载到主引导程序文件中。

1 个答案:

答案 0 :(得分:2)

转移到多模块应用程序可能是个好主意。我在Phalcon Multi-Module Routing解释了我是如何做到的。

您可以在一个地方为您的安全模块设置所有路线,查看目录,单独配置等。

从您的安全基类扩展是很好的,您已经从Phalcon\Mvc\Model延伸,所以它没有什么不同。

你可以这样做:

<?php
namespace My\Controllers;

use My\Security\Controllers\ControllerBase as SecurityBase;

class ControllerBase extends SecurityBase
{
...