2012-11-13 1 views
3

제목에 이미 CakePHP 2의 Acl 튜토리얼에 문제가 있다고합니다. 튜토리얼에서 언급 한 모든 방식을 정확히 수행했지만 여전히 그렇습니다 작동하지 않습니다.CakePHP 2 : Acl 튜토리얼이 작동하지 않습니다.

나는이 튜토리얼에 문제가있는 인터넷에 많은 사람들이 있다는 것을 알고있다. 그러나 나는 나 같은 문제로 블로그 항목이나 무엇이든 찾을 수 없다. 나는 다음과 같은 오류가 내 응용 프로그램의 방향에 액세스하려고 할 때 :

AclNode::node() - Couldn't find Aro node identified by "Array ([Aro0.model] => Group [Aro0.foreign_key] =>) " 

그래서 모든 ACL에 전송 foreign_key에 대한 값이되지 않습니다 :

Notice (8): Undefined index: group_id [APP\Model\User.php, line 98] 

하고 있습니다. 그러나 이상한 것은이 userscontroller-의 기능에 -at 적어도 그 foreign_key가 제대로 설정되어 있지만이 ACL에 전달되어야 때

Nr Query Error Affected Num. rows Took (ms) 

1 SELECT COUNT(*) AS `count` FROM `cake`.`users` AS `User` WHERE `User`.`id` = 4 
2 SELECT COUNT(*) AS `count` FROM `cake`.`users` AS `User` WHERE `User`.`id` = 4 
3 SELECT COUNT(*) AS `count` FROM `cake`.`users` AS `User` WHERE `User`.`id` = 4 
4 UPDATE `cake`.`users` SET `modified` = '2012-11-13 19:59:47' WHERE `cake`.`users`.`id` = '4' 
5 SELECT `User`.`group_id` FROM `cake`.`users` AS `User` WHERE `User`.`id` = 4 LIMIT 1 
6 SELECT `Aro`.`id`, `Aro`.`parent_id`, `Aro`.`model`, `Aro`.`foreign_key`, `Aro`.`alias` FROM `cake`.`aros` AS `Aro` LEFT JOIN `cake`.`aros` AS `Aro0` ON (`Aro`.`lft` <= `Aro0`.`lft` AND `Aro`.`rght` >= `Aro0`.`rght`) WHERE `Aro0`.`model` = 'Group' AND `Aro0`.`foreign_key` = 2 ORDER BY `Aro`.`lft` DESC 
7 SELECT `Aro`.`id`, `Aro`.`parent_id`, `Aro`.`model`, `Aro`.`foreign_key`, `Aro`.`alias` FROM `cake`.`aros` AS `Aro` LEFT JOIN `cake`.`aros` AS `Aro0` ON (`Aro`.`lft` <= `Aro0`.`lft` AND `Aro`.`rght` >= `Aro0`.`rght`) WHERE `Aro0`.`model` = 'User' AND `Aro0`.`foreign_key` = 4 ORDER BY `Aro`.`lft` DESC 
8 SELECT COUNT(*) AS `count` FROM `cake`.`aros` AS `Aro` WHERE `Aro`.`id` = 6 
9 SELECT COUNT(*) AS `count` FROM `cake`.`aros` AS `Aro` WHERE `Aro`.`id` = 6 
10 SELECT `Aro`.`parent_id` FROM `cake`.`aros` AS `Aro` WHERE `Aro`.`id` = 6 LIMIT 1 
11 SELECT `Aro`.`id`, `Aro`.`parent_id`, `Aro`.`lft`, `Aro`.`rght` FROM `cake`.`aros` AS `Aro` WHERE 1 = 1 AND `Aro`.`id` = 6 LIMIT 1 
12 SELECT `Aro`.`id`, `Aro`.`lft`, `Aro`.`rght` FROM `cake`.`aros` AS `Aro` WHERE 1 = 1 AND `Aro`.`id` = 2 LIMIT 1 
13 SELECT COUNT(*) AS `count` FROM `cake`.`aros` AS `Aro` WHERE `Aro`.`id` = 6 
14 UPDATE `cake`.`aros` SET `parent_id` = 2, `model` = 'User', `foreign_key` = 4, `id` = 6 WHERE `cake`.`aros`.`id` = '6' 
15 SELECT `Aro`.`id`, `Aro`.`parent_id`, `Aro`.`model`, `Aro`.`foreign_key`, `Aro`.`alias` FROM `cake`.`aros` AS `Aro` LEFT JOIN `cake`.`aros` AS `Aro0` ON (`Aro`.`lft` <= `Aro0`.`lft` AND `Aro`.`rght` >= `Aro0`.`rght`) WHERE `Aro0`.`model` = 'Group' AND `Aro0`.`foreign_key` IS NULL ORDER BY `Aro`.`lft` DESC 

오류 메시지에서 줄

을 사라는 다음과 같습니다

public function bindNode($user) { 
    return array('model'=>'Group','foreign_key'=>$user['User']['group_id']); 
} 

foreign_key의 값이 첫째로 '2'(어떻게 될까요?)이고 이후에는 NULL입니까?

여러분 중 일부는 저를 도울 수 있기를 바랍니다. 감사합니다. .

PS : 모든 사람에 대한 내 질문의 독일어 버전을 선호, here 그 것이다

UPDATE :

public function bindNode() { 
    $this->id; 
    $data = $this->read(); 
    return array('model' => 'Group', 'foreign_key' => $data['User']['group_id']); 
    } 
: 나는이를 통해 userscontroller의 모든 기능을 작동 할 수 있었다

다른 모든 컨트롤러의 경우에도 여전히 동일합니다 .. 다른 컨트롤러에서도 작동하도록 모델에서 사용자 데이터를 가져올 수있는 아이디어가 있습니까?

답변

4

나는 내 자신의 질문에 대답하기가 약간 어리지만, 같은 문제가있는 사람이라면 여기에 남겨 두는 것이 더 나을 것이라고 생각한다. 인터넷.)

,

public function bindNode() { 
    $data = AuthComponent::user(); 
    return array('model' => 'Group', 'foreign_key' => $data['User']['group_id']); 
    } 
그것은 완벽하게 작동하고, 어쩌면 약간 다른 사람을 도움이 될 것 같다

:

나는 다음과 같은 코드를 통해 문제를 해결할 수 있었다