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