2008-09-25 50 views
4

我有两个控制器共享他们的大部分代码(但必须是不同的控制器)。 (对我来说,至少)明显的解决方案是创建一个类,并使两个控制器继承它。事情是......放在哪里?现在我已经在app_controller.php中,但它有点混乱。将CakePHP中的控制器父类放在哪里?

回答

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); 

更多信息:

Documentation

4

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

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index')); 
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments')); 
+0

不,它不是真的,它只是代码中有一点区别,但是谢谢:) – paradoja 2008-09-26 11:54:30

相关问题