【问题标题】:Arrange CakePHP plugins into subfolders将 CakePHP 插件排列到子文件夹中
【发布时间】:2013-07-29 14:18:56
【问题描述】:

我注意到有些人提到了对控制器和有时模型的类似要求,但我一直找不到任何关于在子文件夹中安排插件的内容。

我想要……

/app
    /Plugin
        /Modules
            /Form
                /Controller
            /Gallery
                /Controller
        /SomeStandardPlugin
            /Controller

..这样我就可以将所有特定于 CMS 功能的插件分开。

我试过了:

CakePlugin::load('Form');
CakePlugin::load('Modules/Form');
CakePlugin::load('../Plugin/Modules/Form');

无论我尝试上述哪种方法,当我尝试在其中一个插件中使用控制器时,它都会显示:

Error: FormsController could not be found.

Error: Create the class FormsController below in file: app\Controller\FormsController.php

(如果我不想在插件中使用它会很好!)

CookBook 也没有提及任何关于它的内容 - 它只是不受支持还是我遗漏了什么?

仅供参考:我使用的是 CakePHP v2.2.3

【问题讨论】:

    标签: php cakephp plugins


    【解决方案1】:

    CakePlugin::load 的参数不是路径

    此函数的第一个参数是插件的名称。这是加载插件的正确方法:

    CakePlugin::load('Name');
    

    但只有当插件存在于location configured using App::build中时它才会起作用

    因此,要将插件组织到子文件夹中,有必要声明包含 a 插件的所有路径:

    // append app/Plugin/Modules to the path to look for plugins
    App::build(array(
        'Plugin' => array(
            APP . 'Plugin/Modules'
         )
    ));
    

    【讨论】:

    • 我已经在 app/config/ 和 AppController beforeFilter() 的引导程序中尝试过这个,但仍然没有运气。我有(在相对的Controller 文件夹中有一个FormsAppController.php 和FormsController.php 每个文件都包含一个文件名类,扩展AppController。我创建了一个FormsAppModel 以及CakePHP Cookbook 上的说明跨度>
    • 它是否与常规位置的插件一起工作(即您的问题与路径或其他有关)?如果您使用的是 2.2.3,app/config 不是 Cake 寻找配置文件的地方。当代码到达 beforeFilter 时 - 它正在呈现“丢失任何”异常的过程中,这为时已晚:)。
    • 它不...不知道为什么我之前没有尝试过 -.- 所以它实际上只是一个糟糕的插件,目前而不是一个错误的地方大声笑。不过,在您的另一条笔记中,您的 App::build 代码应该去哪里?我的数据库和其他配置是从app/Config 读取的,所以我认为也需要去那里。
    • 配置!== 配置。有关更多信息,请参阅文档:plugins need to be loaded manually in app/Config/bootstrap.php.
    • 是的,只是注意到它提到了 bootstrap.php(我知道它是“配置”我只是没有费心在我的评论中大写它,因为我认为我的意思很清楚,我为混乱)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多