我有两个共享大部分代码的控制器(但必须是不同的控制器)。显而易见的解决方案(对我来说,至少)是创建一个类,并使两个控制器继承它。事情是......在哪里放?现在我在app_controller.php中有它,但那里有点混乱。
答案 0 :(得分:9)
在蛋糕中,组件用于存储可由多个控制器使用的逻辑。该目录是/ 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);
更多信息:
答案 1 :(得分:4)
顺便说一句,如果“他们必须是单独的控制器”的原因是您需要的URL。请记住,您可以使用路由:
Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));