チュートリアルを正しく完了したと断言できたのに、エラー メッセージが表示され、 aros_acos テーブルが空です。
私がすでに行ったこと:
このページ: http://book.cakephp.org/view/646/Creating-ACOs 「cake acl create aco root controllers」を実行したところ、「New Aco 'controllers' created.」が返されました。「$this->Auth->actionPath = 'controllers/';」も追加しました。AppsController の beforeFilter() に。コードの他の部分は、どこに行くべきかについて説明が不十分であるため、理解できません。「AclComponent を使用する」とは正確にはどういう意味ですか?
このページから build_acl() を実行しました: http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs これにより、「acos」テーブルに 46 のエントリが入力されました。
問題があると思われるページは次のとおりです。私が使用しているグループのID:
function initDB() { $group =& $this->User->Group;
//Allow admins to everything $group->id = 5; $this->Acl->allow($group, 'controllers'); //allow managers to posts and widgets $group->id = 6; $this->Acl->deny($group, 'controllers'); $this->Acl->allow($group, 'controllers/Posts'); $this->Acl->allow($group, 'controllers/Widgets'); //allow users to only add and edit on posts and widgets $group->id = 7; $this->Acl->deny($group, 'controllers'); $this->Acl->allow($group, 'controllers/Posts/add'); $this->Acl->allow($group, 'controllers/Posts/edit'); $this->Acl->allow($group, 'controllers/Widgets/add'); $this->Acl->allow($group, 'controllers/Widgets/edit');
}
また、ユーザーとグループのコントローラーから allowedActions へのすべての参照を取得し、投稿、ウィジェット、および AppController ページに正しいコードを追加しました...
http://localhost/basic_cake2/groups/initDBにアクセスして AppController 内で initDB() を実行すると、画面の上部に警告メッセージが表示されます。それは言います:
DbAcl::allow() - 無効なノード [CORE/cake/libs/controller/components/acl.php、325 行目]
環境:
$aro = stdClass stdClass::$id = 5 $aco = "コントローラー" $actions = "*" $value = 1 $perms = false $permKeys = array( "_create", "_read", "_update", "_delete " ) $save = 配列()
コード:
if ($perms == false) { trigger_error(__('DbAcl::allow() -
無効なノード', true), E_USER_WARNING);
また、次のことも示します。
DbAcl::allow() - CORE/cake/libs/controller/components/acl.php、325 行目 AclComponent::allow() - CORE/cake/libs/controller/components/acl.php、101 行目 AppController::initDB () - APP/app_controller.php、23 行目 Object::dispatchMethod() - CORE/cake/libs/object.php、116 行目 Dispatcher::_invoke() - CORE/cake/dispatcher.php、227 行目 Dispatcher:: dispatch() - CORE/cake/dispatcher.php、194 行目 [メイン] - APP/webroot/index.php、88 行目
aros_acos テーブルを確認すると、何も追加されていないことがわかりました。
したがって、認証はどのページでも機能しません... :(誰かアイデアはありますか?これをデバッグする方法がわかりません。 -ドキュメントを読んでください。
編集: わかりました。チュートリアルをもう少し詳しく読んだところ、間違ったファイルから関数を実行していたことがわかりました。これを Users Controller に移動し、aros_acos テーブルに 3 行追加しました。
ただし、まだエラー メッセージが表示されるので、まだ何か問題があると思います。
エラー メッセージのコンテキストが変更されたように見えますが、これは興味深いことです。現在は次のようになっています。
$aro = グループ
Group::$name = "グループ"
Group::$validate = 配列
Group::$hasMany = 配列
Group::$actsAs = 配列
Group::$useDbConfig = "デフォルト"
Group::$useTable = "グループ"
Group::$displayField = "名前"
グループ::$id = 6
グループ::$データ = 配列
Group::$table = "グループ"
Group::$primaryKey = "id"
Group::$_schema = 配列
Group::$validationErrors = 配列
Group::$tablePrefix = ""
Group::$alias = "グループ"
Group::$tableToModel = 配列
Group::$logTransactions = false
グループ::$トランザクション = false
Group::$cacheQueries = false
Group::$belongsTo = 配列
Group::$hasOne = 配列
Group::$hasAndBelongsToMany = 配列
Group::$Behaviors = BehaviorCollection オブジェクト
Group::$whitelist = 配列
Group::$cacheSources = true
グループ::$findQueryType = NULL
グループ::$再帰 = 1
グループ::$order = NULL
グループ::$__exists = NULL
Group::$__associationKeys = 配列
Group::$__associations = 配列
Group::$__backAssociation = 配列
グループ::$__insertID = NULL
グループ::$__numRows = NULL
Group::$__affectedRows = NULL
Group::$_findMethods = 配列
グループ::$_log = NULL
Group::$User = ユーザー オブジェクト
Group::$Aro = Aro オブジェクト
$aco = "コントローラー/投稿"
$actions = "*"
$値 = 1
$perms = false
$permKeys = 配列(
"_作成"、
"_読んだ"、
"_アップデート"、
"_消去"
)
$save = 配列()