質問: array( 'core.edit.state' => array(), 'core.edit.delete' => array(), 'core.edit.edit' => array(), 'core.edit.state' => array(), 'core.edit.edit.own' => array(1=>true) ); if(!$catmodel->save($params)) return false; これはすべて驚くほどうまくいき、期待どおりの権限でカテゴリを作成します。ただし、途中で手動で追加された他のカテゴリを調べると、すべて同じparent_idの祖先があるため、#__assetsテーブルにrules列の2つの異なる種類があることがわかります。#__ assetsルールの例#1(上記のコードによって作成され、一部はadmin category managerを使用して、多くのカテゴリで使用されています){ "core.create":[], "core.delete":[], "core.edit":[], "core.edit.state":[], "core.edit.own":{"1":1} } #__ assets rules example#2(admin category managerによって作成され、多くのカテゴリで使用されています){ "core.create":{"6":1,"3":1}, "core.delete":{"6":1}, "core.edit":{"6":1,"4":1}, "core.edit.state":{"6":1,"5":1}, "core.edit.own":{"1":1,"6":1,"3":1} } カテゴリーマネージャーでそれらを表示すると、両方のカテゴリーが同じ権限を持っているように見えます-「所有者の編集」が「許可」に設定されている以外のすべてを継承します。したがって、実際の問題は2つあります。 これら2つのルールセットの違いは何ですか 私たちが使用している方法(例1を示す)はとにかく不完全です
回答: アセットテーブルのルール列は、各アイテムのカスタムルールを個別に定義します。フィールドのデフォルト値は次のようになります。{"core.create":[],"core.delete":[],"core.edit":[],"core.edit.state":[],"core.edit.own":[]} つまり、このアイテムのすべての権限ルールは、各グループに指定されているデフォルトのグローバル構成設定から権限を継承します。それ以外の場合は、アイテムごとに権限のオーバーライドがあります。{"core.create":{"6":1,"3":1},"core.delete":{"6":1},"core.edit":{"6":1,"4":1},"core.edit.state":{"6":1,"5":1},"core.edit.own":{"6":1,"3":1}} core.create":{"6":1,"3":0}の値の意味の説明:このアイテムのグループid 6には作成権限が "許可"(1)に設定されていますが、グループidには作成権限が "拒否"(0)に設定されています。 (これらの権限はデフォルトのグローバル権限を上書きし、残りのグループの他のすべての権限は継承されます。)お役に立てれば...