Использовать компонент cakephp внутри модели
Как использовать компонент, который я создал в cakePHP, внутри одного из моих классов моделей? Возможно ли это?
Если да, сообщите мне, как я могу это сделать
Ответы
Ответ 1
В MVC возможно, но довольно плохая практика. Вы должны переосмыслить и переорганизовать свой код, если считаете, что вам нужно использовать компонент в модели, потому что тогда что-то не так.
Предполагается, что компонент использует код между контроллерами, только между контроллерами.
Чтобы поделиться повторно используемым кодом между моделями, это будет поведение. Для представления это будет помощником.
Если у вас есть действительно общий код, он должен быть lib или помещен в папку Utilities/namespace или создать новое пространство имен. Проверьте существующие классы там, чтобы получить представление о том, что добавить туда.
Никакой код не был предоставлен, поэтому невозможно дать какую-либо реальную рекомендацию относительно того, как его реорганизовать. Однако способ, которым вы хотите использовать существующий код, не будет работать в контексте MVC, поэтому переосмыслите свой подход к тому, что вы пытаетесь сделать.
Ответ 2
Можно использовать компонент внутри модели (но я не могу комментировать, если это рекомендуется или лучше всего).
Вдохновленный из исходного источника, пример использования компонента под названием" Геокодер в модели:
App::import('Component','GeoCoder');
$gc = new GeoCoderComponent(new ComponentCollection);
Затем вы можете использовать $gc
для вызова функций компонента.
-
P.S.: Я не хочу поощрять плохие методы программирования, но иногда давление сроков (в реальных проектах) может заставить разработчика принять такие решения.
Ответ 3
@AD7six
// Use anywhere
AuthComponent::user('id')
// From inside a controller
$this->Auth->user('id');
Из документации PHP для торта они предоставляют AuthComponent::user('id')
, чтобы ее можно было использовать в местах, отличных от контроллера.
Может быть, мне нужен больший намек, но почему моя модель не может получить доступ к информации ACL?