Данная рекомендация поможет Вам, если вы используете в своей разработке фреймворк CakePHP.
Иногда возникает ситуация, когда нужно получить (изменить) данные модели из контроллера, который с ней никак не связан.
Например. Вы хотите хранить в базе данных параметры вашего приложения (модель «Cоnfig»), а видеть эти параметры должны почти все контроллеры.
Делается это следующим образом, при помощи функции loadModel.
Из описания функции:
Controller::loadModel(string $modelClass, mixed $id)
Функция loadModel приходит на помощь, когда вам нужно использовать модель, не являющуюся связанной моделью либо моделью контроллера по умолчанию.
<?php App::import('Controller'); class ReportsController extends AppController { // Свойство для хранения параметров public $config = array(); public function beforeFilter() { parent::beforeFilter(); // Загружаем модель Config $this->loadModel('Config'); // Запрашиваем данные из модели $config = $this->Config->find('all'); foreach ($config as $k => $v) { $this->config[$v['Config']['param_name']] = $v['Config']['param_value']; } } } ?>
Альтернативный вариант, может помочь если вам нужно просто прочитать данные из любой таблицы в БД, ну и вообще выполнить любой запрос:
<?php App::import('Controller'); class ReportsController extends AppController { // Свойство для хранения параметров public $config = array(); public function beforeFilter() { parent::beforeFilter(); // Выполняем запрос к таблице Config $config = $this->Report->query("SELECT param_name, param_value FROM `config` Config"); foreach ($config as $k => $v) { $this->config[$v['Config']['param_name']] = $v['Config']['param_value']; } } } ?>
Комментарии закрыты.