Где поместить родительский класс контроллера в CakePHP? - PullRequest
4 голосов
/ 25 сентября 2008

У меня есть два контроллера, которые совместно используют большую часть своего кода (но, тем не менее, это должны быть разные контроллеры). Очевидное решение (по крайней мере для меня) состоит в том, чтобы создать класс и заставить два контроллера наследовать его. Дело в том ... где это поставить? Теперь он у меня есть в app_controller.php, но там немного грязно.

Ответы [ 2 ]

9 голосов
/ 25 сентября 2008

В торт компоненты используются для хранения логики, которая может использоваться несколькими контроллерами. Это каталог / app / controllers / components. Например, если у вас есть какая-то разделяемая служебная логика, у вас будет объект с именем UtilComponent и файл в / app / controlers / components с именем UtilComponent.php.

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

        return $param;
    }
}
?>

Затем в классах вашего контроллера вы добавите:

var $components = array('Util');

Затем вы вызываете методы, такие как:

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

Подробнее:

Документация

4 голосов
/ 26 сентября 2008

Кстати, если причиной «они должны быть отдельными контроллерами» являются URL-адреса, которые вам нужны. Помните, что вы можете использовать маршрутизацию:

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...