【问题标题】:Different directories and namespaces for controllers in PhalconPhalcon 中控制器的不同目录和命名空间
【发布时间】:2015-11-05 06:55:27
【问题描述】:

我希望能够构建一个小型应用程序(例如一个基本的登录 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 文件夹中创建一个路由文件,然后将它加载到主引导文件中。

【问题讨论】:

  • 你的路由器中设置了命名空间吗?
  • 我刚刚尝试过,一切顺利,谢谢。我认为每个扩展的路由文件可能是由主引导文件加载的方法。
  • @JamesFenwick 有什么简单的方法可以让这些控制器找到正确的视图文件吗?目前我正在考虑将详细信息放入扩展特定的配置文件中。

标签: model-view-controller phalcon


【解决方案1】:

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

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

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

你可以这样做:

<?php
namespace My\Controllers;

use My\Security\Controllers\ControllerBase as SecurityBase;

class ControllerBase extends SecurityBase
{
... 

【讨论】:

  • 谢谢,现在去看看。快速浏览后,我有一个问题 - 这是否可以让一个模块中的类从另一个模块中的类继承? main app 中的每个类都应该从 security module 中的 ControllerBase 继承,因为它实现了 Auth / ACL 检查。
猜你喜欢
  • 1970-01-01
  • 2014-12-13
  • 2012-05-02
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 2015-04-12
  • 2010-10-28
相关资源
最近更新 更多