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

Different directories and namespaces for controllers in Phalcon

我希望能够构建一个小型应用程序(例如基本的登录 MVC 结构)并构建我的 Phalcon 项目,这样我就可以将它放在一个文件夹中并调整 config归档一下。

例如我有根据 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 文件夹中创建一个路由文件,然后将其加载到主 bootstrap 文件中。

转移到多模块应用程序可能是个好主意。我在 Phalcon Multi-Module Routing.

解释了我是如何做到的

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

可以从您的安全基础 class 扩展,您已经从 Phalcon\Mvc\Model 扩展,所以它没有什么不同。

你可以这样做:

<?php
namespace My\Controllers;

use My\Security\Controllers\ControllerBase as SecurityBase;

class ControllerBase extends SecurityBase
{
...