2008-09-25 3 views
4

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

ответ

9

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

Дополнительная информация:

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

Смежные вопросы