2017-09-03 6 views
0

質問:Plugin/configディレクトリから設定ファイルを読み込むにはどうしたらいいですか?CakePHP 3のプラグイン設定ファイルを動的にロードする

デモプロジェクト:https://github.com/CakePHPKitchen/CakeDC-Users-Permissions-Example

私はCakeDC /ユーザーがプラグインと、それはそれはからRBAC権限をロードpermissions.phpファイルを持って使用しています。私が知ることから、ユーザープラグインのconfigフォルダにあるデフォルトのアクセス権ファイルをロードするか、app/configフォルダからpermissions.phpファイルをロードします。

私のアプリのスケルトンでは、app/config/permissions.phpにアクセス権がありますが、私はgitを上流のリポジトリからpullしたいので、そのファイルを変更したくありません。競合を回避する。

それでは、私がやりたいことは、私は

foreach(Plugin::loaded() as $plugin) { 

    $path = Plugin::path($plugin) . 'config/permissions.php'; 

    if(file_exists($path)) { 

     Configure::load($path, 'default', true); 
    } 
} 

したいと思います。しかし、私は次のエラーを取得しています

ブートストラップアプリのスケルトンで、ある....

Error: The application is trying to load a file from the /Users/jlroberts/Projects/JeffreyLRobertsCom/CakePHPKitchen/PluginDemos/plugins/SharpAgent/config/permissions plugin. 

Make sure your plugin /Users/jlroberts/Projects/JeffreyLRobertsCom/CakePHPKitchen/PluginDemos/plugins/SharpAgent/config/permissions is in the /Users/jlroberts/Projects/JeffreyLRobertsCom/CakePHPKitchen/PluginDemos/plugins/ directory and was loaded. 

Plugin/configディレクトリからpermissions.phpファイルをどのように読み込むことができますか?

答えて

1

EDITED:あなたが今やっているようプラグインからpermissions.phpファイルをロードしますが、例えば、コンフィギュレーションで定義されている既存のアクセス許可を維持するためにpermissions.phpの内容を変更することができます

のconfig/permissions.php

あなたが持っている可能性があり、各プラグインの内部次に
$permissions = [ 
    // add your app permissions here 
    [ 
     // ... 
    ], 
]; 

// there are more permissions in this config key, defined across your plugins 
$morePermissions = \Cake\Core\Configure::read('MyPermissions'); 
$allPerms = array_merge($permissions, $morePermissions); 

return ['CakeDC/Auth.permissions' => $allPerms]; 

YOUR_PLUGIN /設定/ bootstrap.phpの

$permissions = \Cake\Core\Configure::read('MyPermissions'); 
$someMorePermissions = [ 
    [ 
     // permissions injected into the app from this plugin 
    ] 
]; 

$permissions = array_merge((array)$permissions, $someMorePermissions); 
\Cake\Core\Configure::write('MyPermissions', $permissions); 

各プラグインがアプリケーションに権限を動的に注入/管理することを許可します。

私はデモプロジェクトを作成し、ここで、このコードhttps://ide.c9.io/steinkel/users-35-custom-permissions

+0

とc9.io環境を作成しました、それはあなたが例のプラグインで推奨コードを持っていbootstrap.phpの... https://github.com/CakePHPKitchen/CakeDC-Users-Permissions-Example –

+0

プラグインブートストラップが読み込まれたときにアクセス許可が設定にまだ追加されていません。また、ブートストラップでプラグインのアクセス許可を設定すると、最終的に上書きされます... –

+0

CakeDC/authのSimpleRbacAuthorize.phpのコンストラクタが起動されるまで、permissions.phpファイルがロードされないことが私には分かります...あなたが働くと言っているもののように思えます。 CakeDC/authまたはCakeDC/usersのブートストラップ –

関連する問題