Это должно быть просто, но я потратил более часа, пытаясь понять это, поэтому спасибо за вашу помощь.CakePHP: использовать функцию от контроллера плагина в главном контроллере
У меня есть плагин CakePHP, Usermgmt
, с контроллером, расположенным здесь:
./app/Plugin/Usermgmt/Controller/UsersController.php
Я пытаюсь вызвать функцию, userIdFromUsernameAndPassword()
, в этом контроллере от одного из моих главных контроллеров, используя что-то вроде :
$userID = $this->UsersController->userIdFromUsernameAndPassword('[email protected]','pass');
Что необходимо для импорта/включения/инициализации, чтобы иметь возможность работать?
Я пробовал различные операторы импорта, такие как App::uses('UsersController', 'Usermgmt.Controller');
в верхней части моего файла, но нигде не получил.
Спасибо!
Мои знания OOP и MVC взяты из Objective-C и Python, поэтому я немного борюсь с различиями между этими подходами и PHP. Я смотрел на пользователей CakeDC год назад, когда я начал этот проект, но либо я не мог заставить его работать, либо еще не был готов. Я знаю, как получить идентификатор пользователя, вызвав $ this-> Auth-> user ('id'), но это для API, так что пользователь не войдет в систему (пользователь/пароль передается с запросом Post) , – Nick
Я понимаю, что вызов одного контроллера из другого - это неправильный способ сделать что-то здесь. Итак, каков был бы правильный способ ответить на вызов Post с пользователем/pass, проверить эти значения и предоставить им информацию из другой модели? – Nick
@ nickv2002 Мне кажется, что 'userIdFromUsernameAndPassword()' должен быть методом 'User' * model *, например. Доступ к ней должен быть чем-то вроде «ClassRegistry :: init (« Usermgmt.User ») -> userIdFromUsernameAndPassword ('[email protected] ',' pass ');' вы не должны использовать другой ** контроллер ** для получения данных от ** Модели ** в MVC. Необязательно, оберните, если в * Компонент *, чтобы предоставить повторно используемый код, как было предложено. – thaJeztah