0

CakePHP ACL を実装しています。モデルをリクエスターとコントロールの両方にしたいので、次のように設定しました。

public $actsAs = array(
    'Acl' => array(
        'type' => 'both'
    )
);

私が抱えている問題は、ノードのタイプ (ACO または ARO) に応じてモデルの親が異なることです。

parentNode() 関数で次のようなことをして解決したいと思います。

public function parentNode() {

    if('ARO' == $this->type) {
        return 'ARO parent';
    } else {
        return 'ACO parent';
    }

}

したがって、基本的には、ケースごとに適切な親を返すようにします。

これは可能ですか?

===== 更新 - 2013 年 10 月 4 日 =====

公式チケットを提出しましたが、それは検討中です:-)

https://cakephp.lighthouseapp.com/projects/42648/tickets/4122-add-type-as-argument-to-the-parentnode-function#ticket-4122-2

4

1 に答える 1

0

私はケーキのロジックを掘り下げてきました。この問題に対して非常にシンプルで便利な解決策を思いついたと思います。

CakePHP 2.4.1 を使用して、ファイル /lib/Cake/Model/Behavior/AclBehavior.php を編集しました

109 行目に次のように書かれています。

$parent = $model->parentNode();

タイプを引数として追加しただけです。

$parent = $model->parentNode($type);

そうすれば、parentNode() 関数は次のようになります。

public function parentNode($sType) {

    if('ARO' == $sType) {
        return 'ARO parent';
    } else {
        return 'ACO parent';
    }

}

私は幸せです:-)

于 2013-11-07T08:21:22.227 に答える