Я пытаюсь создать ACO вручную в CakePHP и пока не добился успеха.
Мой AppController.php имеет следующий код для инициализации —
public $components = array(
'Acl',
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'jobs',
'action' => 'search'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login',
'home'
),
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish'
)
),
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
),
'DebugKit.Toolbar'
);
Мой UsersController имеет install
метод, который выглядит так
public function install() {
$this->Acl->Aco->create(array('parent_id' => null, 'alias' => 'controllers'));
$this->Acl->Aco->save();
}
Когда я вызываю метод установки — система выдает ошибку, говорящую trying to invoke method create on a non-object
— но я подумал, что это именно то, что просит нас сделать документация CakePHP — чего мне не хватает?
Обновить:
Я взломал предыдущую проблему и в основном пошел прямо к моей Модели и создал там метод для создания ACO — в основном в моей Групповой модели я поместил следующий код, а затем вызвал его через действие контроллера. Это помогло создать ACO
public function install() {
$aco = new Aco();
$aco->create(array('parent_id' => NULL, 'alias' => 'controllers'));
$aco->create(array('parent_id' => 1, 'alias' => 'users'));
$aco->create(array('parent_id' => 1, 'alias' => 'jobs'));
$aco->save();
}
Однако теперь у меня есть следующая проблема создания ассоциаций между ACO и ARO — я попытался загрузить утилиту AclExtras, и это также выдает ошибку при попытке запуска из оболочки — ошибка, которую я получаю, приведена ниже
Неустранимая ошибка: вызов узла-члена функции () для необъекта в /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/Plugin/AclExtras/Lib/AclExtras.php в строке 217
Ошибка фатальной ошибки: вызов узла-члена функции () для необъекта в [/Applications/XAMPP/xamppfiles/htdocs/cakephp/app/Plugin/AclExtras/Lib/AclExtras.php, строка 217]
По сути, по какой-то причине он не может получить объект Aco или Acl — может ли что-нибудь помочь?
Хорошо — я, наконец, отказался от попытки исправить эту ошибку и сделал новую установку на другом компьютере. Я следовал за учебником, изложенным в CakePhp.org слово в слово и заставил его работать. Теперь я собираюсь переоснастить всю мою существующую работу поверх этого.
Короче говоря — я не знаю, что сломалось или что я должен сделать, чтобы исправить исходную проблему, но создание новой установки, а затем продолжение помогло
Других решений пока нет …