2010-01-17 4 views
0

Возник вопрос, может быть, даже проблема при создании компонента CakePHP. В принципе, мне нужно реализовать несколько квестов, к которым можно получить доступ во всем моем макете (статистика боковых панелей и так далее).CakePHP: запрос в компоненте?

Когда я пытаюсь выполнить запрос в компоненте, я получил ошибку о вызове функции на не-объекте.

Черт, может ли кто-нибудь объяснить мне этот?

Cheers!

+0

Я могу использовать точную ошибку или код, из которого возникает ошибка;) –

ответ

3

Вы делаете что-то вроде этого?

class MyComponent extends object { 
    function startup(&$controller) { 
    $this->controller = $controller; // Stores reference Controller in the component 
    } 
    function common() { 
    $data = ClassRegistry::init('MyModel')->myQuery(); // Call the query on the model 
    $this->controller->set(compact('data')); // Sets data from myQuery in view 
    } 
} 
+0

+1 Это решение лучше, чем мое, потому что оно не только загружает модель, но и создает ее. Я забыл об этом, когда предоставил свой собственный ответ. –

+0

Святая Мать! Это то, что я хочу! Большое спасибо! – Johannes

0

Из-за опасности звучания педантичного звучания вы нарушаете MVC довольно вопиюще, делая это. Если вы с этим согласны, вы можете использовать App::import() для загрузки любой модели из любого места в вашем приложении (http://book.cakephp.org/view/531/Importing-Controllers-Models-Components-Behaviors-).

Если вы заинтересованы в попытке сохранить структуру MVC, мы сможем помочь с некоторой дополнительной информацией о запросах, которые вам нужно выполнить таким образом.

+1

Роб, я пробовал это, но мне нужно было что-то прикрутить. Каждый час я узнаю что-то новое о CakePHP :) – Johannes

+0

Я думаю, что мы делаем здесь, используя cakePHP и красивую структуру для добавления изолированной таблицы, которая используется в приложении, но не является частью потока или логики приложения. Хорошим примером этого является таблица статистики. – mna

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