2

チュートリアルを正しく完了したと断言できたのに、エラー メッセージが表示され、 aros_acos テーブルが空です。

私がすでに行ったこと:

  1. このページ: 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 を使用する」とは正確にはどういう意味ですか?

  2. このページから build_acl() を実行しました: http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs これにより、「acos」テーブルに 46 のエントリが入力されました。

  3. 問題があると思われるページは次のとおりです。私が使用しているグループの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 = 配列()

4

1 に答える 1

6

それを私が直した。今後の参考のために:

  1. 最初からやり直すために、すべてのテーブルの内容を削除しました。
  2. 間違ったファイルから initDB() を実行していました。ユーザーコントローラーに正しく移動しました。実行してもエラー メッセージが表示されなくなり、正しいエントリが aros_acos に追加されました。

修理済み!

于 2010-01-24T21:03:41.690 に答える