2012-02-01 5 views
0

Я развиваюсь с помощью CakePHP, и плагин Alaxos ACL очень помог.CakePHP 1.3: плагин Alaxos ACL не распознает плагин страниц

Однако, я столкнулся с одной проблемой, я не уверен, как ее исправить?

Я добавил плагин с именем «страницы», но я не могу получить ACL, чтобы увидеть его, чтобы он был добавлен в список разрешенных/запрещенных действий.

Если я достигаю плагин через domain.com/pages/pages я получаю следующую ошибку

DbAcl::check() - Failed ARO/ACO node lookup in permissions check. 

Когда я проверяю через дисплей ACL плагин, нет никаких ссылок на контроллер страниц и если я бегу функция сборки ACL, она просто говорит, что добавить нечего.

Это потому, что этот контроллер называется страницами, и в Cake уже есть контроллер страниц?

Если это так, как исправить? Является ли мой единственный вариант, в настоящее время, добавив это вручную в Db? Должен ли я перейти через этот плагин и переименовать страницы на что-то еще? или есть что-нибудь еще, что я должен делать?

Спасибо,

ответ

1

Я вижу здесь две вещи. Сначала, как вы подозреваете, наличие двух классов в приложении, имеющих одно и то же имя, является плохой идеей. Скорее всего, это вызовет некоторые проблемы так или иначе, с тем, что тот или иной экземпляр был создан или что-то еще. Поскольку Cake не использует пространства имен, это не рекомендуется.

Тогда, даже если вы измените это имя, возникнет другая проблема, если контроллер, которым вы хотите управлять с помощью ACL, является контроллером «по умолчанию» (контроллером с таким же именем, что и плагин). Возникла проблема с извлечением узлов ACO, когда путь содержит в два раза то же имя, что и для контроллеров по умолчанию для плагинов.

controllers/Pages/Pages/index 

Поэтому я решил просто пропустить контроллеры по умолчанию плагинов из контроллеров, поддерживаемых плагином ACL.

Если вы являетесь автором этого плагина, вы можете переименовать его (поскольку PortalController уже существует) и перемещать действия в другом контроллере, чем контроллер по умолчанию.

+0

Спасибо, что ответили. Я прошел через этот плагин и изменил все, чтобы сделать его доступным через «Paginas.Paginas». Тем не менее, я все еще не могу получить плагин ACL для его обнаружения. Если я добавлю '$ this-> Auth-> allow ('*')' к функции 'beforeFilter()' на этом контроллере, тогда я смогу получить доступ к этому плагину и обработать все, как было разработано. Однако, как только я прокомментирую это, я возвращаюсь к той же ошибке ARO/ACO. Единственное, что я могу сейчас подумать, - это вручную ввести информацию для этого и всех своих непубличных действий в таблицах ACO/ARO. Дайте мне знать, если у вас больше предложений ... –

+0

Я также обновлю это сообщение, если я смогу выполнить эту работу, вручную введя данные в Db. Я просто не знаю, почему плагин Alaxos ACL не может обнаружить это и добавить его. –

+0

Как я уже говорил, если вы используете контроллер по умолчанию (контроллер с тем же именем, что и плагин), плагин Acl его не видит. Я должен был сделать это так, потому что я думал, что в ядре AclNode есть ошибка. Но на самом деле я понял несколько дней назад, что проблема была на моей стороне (http://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/1739-case-insensitive-acos-table-can-cause-duplicate -path-retrievements). Я попытаюсь выпустить обновление плагина через пару дней. – nIcO

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