Куда поместить родительский класс контроллера в CakePHP?
-
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'));