4

我有两个共享大部分代码的控制器(但必须是不同的控制器)。显而易见的解决方案(至少对我而言)是创建一个类,并让两个控制器从它继承。问题是……放在哪里?现在我在 app_controller.php 中有它,但是那里有点乱。

4

2 回答 2

9

在 cake 中,组件用于存储可供多个控制器使用的逻辑。该目录是/app/controllers/components。例如,如果您有一些可共享的实用程序逻辑,您将有一个名为 UtilComponent 的对象和一个名为 UtilComponent.php 的 /app/controlers/components 文件。

<?php
class UtilComponent extends Object {
    function yourMethod($param) {
        // logic here.......

        return $param;
    }
}
?>

然后,在您的控制器类中,您将添加:

var $components = array('Util');

然后你调用如下方法:

$this->Util->yourMethod($yourparam);

更多信息:

文档

于 2008-09-25T16:54:37.750 回答
4

顺便说一句,如果“它们必须是单独的控制器”的原因是您需要的 URL。请记住,您可以使用路由:

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
于 2008-09-26T09:57:00.693 回答