cakePHPでAclを実装するときにハマってしまったこと

June 22, 2009,
tags: cakephp php


このエントリーをはてなブックマークに追加

基本的には「ここ」のサンプルどおりに作っていたのですが、かなりはまってしまっていました。。

メンドイから、GroupをphpMyAdminから値を設定して、Userの登録はこんな感じので書いていたのですが・・・

# vi controllers/users_controller.php
<?php
class UsersController extends AppController{

	function add(){
		if(!empty($this->data)){
			if($this->data){
				$this->User->create();
				$this->User->save($this->data);
				$this->redirect(array('action' => 'login'));
			}
		}
	}
}
?>

ビューも一応記載しておきます。

# vi views/users/add.ctp
<?php
	echo $form->create('User', array('action' => 'add'));
	echo $form->input('username');
	echo $form->input('password');
	echo $form->input('group_id');
	echo $form->end('login');
?>

そしたら、こんなエラーが・・・

Warning (512): AclNode::node() - Couldn't find Aro node identified by "Array
(
    [Aro0.model] => Group
    [Aro0.foreign_key] => 454
)
" [CORE/cake/libs/model/db_acl.php, line 191]

Groupの登録用のページも作らなきゃarosに登録されないんですね・・・。
なんでこんな簡単なことに今日一日悩まされたんだろう・・・。

だからこんな感じで、Groupの登録用ページ作りました。

<?php
class GroupsController extends AppController{
	function add(){
		if(!empty($this->data)){
			if($this->data){
				$this->Group->create();
				$this->Group->save($this->data);
				$this->redirect(array('action' => 'add'));
			}
		}
	}
}
?>
comments powered by Disqus