【问题标题】:cakephp: how do you load a behavior from a plugin?cakephp:如何从插件加载行为?
【发布时间】:2015-06-22 01:22:15
【问题描述】:

编辑

我使用 cake bake 制作了一个新的插件和行为(使用 --plugin)并且它起作用了。不知道我错过了什么。

我正在尝试加载插件的行为。我正在尝试使用我为自己使用而编写的插件来执行此操作,但是在尝试加载其他人的插件时遇到了同样的问题。

例如加载https://github.com/Xety/Cake3-Upload

我知道你通常应该使用 composer,但这是我加载我自己的插件的方式。

  1. 将插件复制到\app\plugins\Cake3Upload
  2. 使用bootstrap.php 加载插件

    Plugin::load('Cake3Upload', ['autoload' => true]);

  3. 访问我模型的 MyModelTable.php initialize 函数中的行为

$this->addBehavior('Cake3Upload.Upload');

然后我得到以下错误:

缺失行为

找不到Cake3Upload.UploadBehavior。

确保您的插件是从 config\bootstrap.php 加载的,并且 Composer 能够自动加载其类,请参阅加载插件和 插件 - 自动加载插件类

错误:在文件中创建下面的类 UploadBehavior: \app\plugins\Cake3Upload\src\Model\Behavior\UploadBehavior.php

use Cake\ORM\Behavior;

class UploadBehavior extends Behavior
{

}

【问题讨论】:

  • 您是否按照错误消息的提示阅读了the docs
  • 是的。这就是我尝试['autoload' => true]的原因

标签: cakephp cakephp-3.0


【解决方案1】:

那么命名空间呢?如果你不使用作曲家,你必须建立相同的文件树。

我认为这只是关于uploadBehavior 有这个命名空间:

namespace Xety\Cake3Upload\Model\Behavior;

那么你只需要遵循插件文档:

Plugin::load('Xety/Cake3Upload');

$this->addBehavior('Xety/Cake3Upload.Upload');

添加“Xety/”可能

【讨论】:

  • 我在烘焙自己的插件时遇到了同样的错误,所以我认为这与名称间距无关。
猜你喜欢
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2015-06-24
  • 2012-12-29
  • 1970-01-01
  • 2014-09-08
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多