I have two controllers which share most of their code (but must be, nonetheless, different controllers). The obvious solution (to me, at least) is to create a class, and make the two controllers inherit from it. The thing is... where to put it? Now I have it in app_controller.php, but it's kind of messy there.
+4
A:
In cake, components are used to store logic that can be used by multiple controllers. The directory is /app/controllers/components. For instance, if you had some sharable utility logic, you would have an object called UtilComponent and a file in /app/controlers/components called UtilComponent.php.
<?php
class UtilComponent extends Object {
function yourMethod($param) {
// logic here.......
return $param;
}
}
?>
Then, in your controller classes, you would add:
var $components = array('Util');
Then you call the methods like:
$this->Util->yourMethod($yourparam);
More Info:
tyshock
2008-09-25 16:54:37
+2
A:
Btw, if the reason for "they must be seperate controllers" is the URLs you require. Remember you can use routing:
Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
Alexander Morland
2008-09-26 09:57:00
No, it isn't really, it's just that there is a little difference in the code, but thanks nonetheless :)
paradoja
2008-09-26 11:54:30