如何在 Cakephp MiddleWare Class 中导入自定义组件?

How a custom component can be imported in Cakephp MiddleWare Class?

我有一个带有

的通用 OAuthComponent
namespace App\Controller\Component

我的中间件 Class 有一个命名空间

namespace App\Middleware;

如何在中间件中使用自定义组件?

你不能,因为组件依赖于控制器。在中间件中加载组件是完全错误的并且违背了框架的体系结构和设计模式。

蛋糕 < 3.6

重构对象中的组件,除了请求和响应之外没有其他依赖项,然后创建将使用该对象的中间件。

蛋糕 >= 3.6 & 4.0

您似乎想对 auth 做些什么,因此对于较新版本的 CakePHP,请使用身份验证插件的标识符,而不是完全使用 auth 组件。该插件实现了一个中间件,并将特定的身份验证机制抽象为标识符。

https://book.cakephp.org/authentication/2/en/index.html

首先导入您的组件

use App\Controller\Component\DateComponent;

然后导入组件注册表

use Cake\Controller\ComponentRegistry;

然后声明成新的变量然后调用组件函数

$registry = new ComponentRegistry();
$date = new DateComponent($registry);