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