Куда поместить родительский класс контроллера в CakePHP?

StackOverflow https://stackoverflow.com/questions/134470

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

В cake компоненты используются для хранения логики, которая может использоваться несколькими контроллерами.Каталог называется /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);

Подробная информация:

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

Другие советы

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

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top