CakePHP: сделать функцию контроллера недоступной - PullRequest
0 голосов
/ 14 октября 2011

У меня есть контроллер администратора, который я хотел бы использовать функции в других контроллерах (эти функции не представляют страницы, которые кто-то загружал бы в своем браузере), но он не может использовать эти функции, потому что функции в других контроллерах являются частными.Они являются частными, потому что я не хочу, чтобы публика получала к ним доступ.Есть ли способ сделать функцию контроллера недоступной для общественности, не делая функцию частной или защищенной?

Ответы [ 4 ]

4 голосов
/ 14 октября 2011
public function __blah(){
// function that can't be accessed from outside, but can be called from other functions
}
2 голосов
/ 14 октября 2011

На основании того, что я прочитал в комментарии к ответу, Петр дал вам:

Вы не используете контроллер администратора.Вы хотите использовать префиксы администратора: http://book.cakephp.org/view/950/Prefix-Routing

и аутентификацию: http://book.cakephp.org/view/1250/Authentication

Если вы звоните - и так звучит ваш комментарий - один контроллер из другого вы делаете что-то полностьюнеправильно в рамках MVC.Если это должен быть повторно используемый код, он должен входить в компоненты, если речь идет о действиях администратора, используйте методы префикса маршрутизации и admin_ *, компонент auth и защищенные методы для того, что вы называете "вспомогательными" методами.

0 голосов
/ 14 октября 2011

Я вижу три возможных решения (их также можно комбинировать):

Первое решение - переместить код, который вы хотите использовать повторно, в компоненты (как упомянуто Burzum).

Второе решение зависит от вашего кода.Возможно, вы делаете вещи в контроллере, что должно быть сделано в модели.В этом случае переместите соответствующий код в модель.

Третье решение - поместить код, который вы хотите использовать повторно, в простые старые классы PHP и загрузить их как файлы вендора .

0 голосов
/ 14 октября 2011

Да.

У вас есть много информации в CakePHP Book о ACL (список контроля доступа), и это именно то, что вы ищете.

Или вы можете использовать Auth компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...