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

Twitter ツイート Hatena Bookmark ブックマーク

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 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'));
			}
		}
	}
}
?>

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

1
2
3
4
5
6
7
8
# 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');
?>

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

1
2
3
4
5
6
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の登録用ページ作りました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?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
Built with Hugo
テーマ StackJimmy によって設計されています。