cakePHP复制函数或使用外部控制器?(干燥问题)


cakePHP duplicating a function or using an outer controller? (DRY issue)

我有3个控制器,Tokens, StoresUsers

Token与另外两个模型相关,每个Token都有一个owner-type和owner-id。

在User_controller和Store_controller中也有一个函数,叫做EmailTokenToUser,它将激活链接发送给注册用户或商店的人。

我的问题是:我应该把函数传递给token吗?如果是,我该怎么称呼它?(requestAction是一个坏主意,只为一个函数创建对象…)

任何想法?

要重用代码,您应该将其传递给token的MODEL而不是控制器。这应该是一种方式,而不是唯一的方式。要使用它,你不应该使用requestAction,即使是在控制器内部(它应该是你可以用requestAction来做的方式)。您可以通过两种方式完成此操作。

App:import('model', Token');
Token::myFunction($args);

$token = ClassRegistry:init('Token');
$token->myFunction($args);

OR(如果你从控制器内部冷却它,你也可以使用)

$this->loadModel('Token');
$this->Token->myFunction($args);

这是如果你把它放在Token模型函数中。如果没有,用控制器的方式你应该这样做

App:import('controller', 'Tokens');
TokensController::myFunction($args);

App:import('controller', 'Tokens');
$token = new TokensController();
$token->myFunction($args);

希望对你有帮助