Я работаю над проектом CakePHP, и я понял, что многие из моих контроллеров имеют почти такой же код. Я решил, что я должен попытаться сделать свой род «BaseController» и имеющим другие контроллеры расширения, что ... что-то вроде этого:Расширительный контроллер для общих функций
class BaseController extends AppController {
public $components = array(
'RequestHandler'
);
public function get($param = "all", $value = "") {
$this->layout = 'ajax';
if($param == "all") {
$data = $this->Base->find('all');
} elseif ($param == "id") {
$data = $this->Base->findById($value);
} else {
...
}
}
...
}
Но в этот момент я заблудился. Я делаю не хочу иметь базовую таблицу базы данных и модель ... Я просто хочу что-то, чтобы не нужно было писать примерно такой же метод get()
десятка раз ... и позволяет сказать, что я делаю контроллер «FooController ", который расширяет этот контроллер ... как мне сделать так, чтобы get()
теперь взаимодействует с моделью/таблицей Foo?
Я предполагаю, что есть способ торта сделать это вместо того, чтобы иметь тонны повторяющегося кода ... но я не смог его найти.
Используйте компонент –
Hi @ mcgowan.b, я смотрю в [документации] (http://book.cakephp.org/2.0/en/controllers/components.html) для компонентов. Я не вижу способ, которым я могу работать с базой данных для разных моделей, я что-то упускаю? – smerny
В руководстве говорится: «Компоненты представляют собой пакеты логики, которые разделяются между контроллерами», и это то, что вы хотите достичь, общую функциональность, доступную для всех контроллеров. [manual] (http://book.cakephp.org/2.0/en/controllers/components.html) –