管理プレフィックスに実行したい(私は、ファイルの最後にこれらをロード)アプリのルーティング設定がまだロードされていません。
古い学校スタイルで使用してください。$_SERVER['REQUEST_URI']
。
$url = $_SERVER['REQUEST_URI'];
$admin = '/admin/';
if(substr($url, 0, strlen($admin)) === $admin) {
Plugin::load('Josegonzalez/Upload');
\Cake\Event\EventManager::instance()->on(new \App\Controller\Event\AppEventListener());
}
更新
あなたのプラグインは、それ自身のブートストラップファイルを持っている必要があります。どの
アップロード/設定/ bootstrap.phpの含まれています:プラグインをロードする際に、ブートストラップを含めることをCakePHPに伝え、その後
\Cake\Event\EventManager::instance()->on(new \App\Controller\Event\AppEventListener());
アプリのブートストラップを。
アプリケーション/設定/ bootstrap.phpの:
Plugin::load('Josegonzalez/Upload', ['bootstrap' => true]);
あなたは条件付きであなたのプラグインを読み込むべきではありません。
あなたのプラグインに対するリクエストで認証を探していると思います。プラグインの使用を許可された管理者に限定したいとします。それはプラグインの問題ではありません。これは認証上の問題で、プラグインの認証コンポーネントを使用して、要求が有効で、現在のユーザーが管理者であることを確認する必要があります。
おかげで、それを読み込むことができます。私はこのイベントリスナーを読み込むことができる他の場所はありますか?これを行うにはcakephpのツールを使用できますか?$ _SERVERを使用するのは悪い習慣です(このイベントは "Model.initialize" btwを使用しています) – hamidreza
いいえ。このプラグインの認証が必要です。私のアプリケーションには2つの部分が含まれています。最初の1つはadmin Webパネルで、もう1つは通常のユーザー向けのWebサイトです。私はadminプレフィックスのためのこのプラグインをロードしたいと思います。そして、eventListenerはadminパネル(私のカスタムタイムスタンプと.....のような)のためにロードするのに必要な振る舞いを処理しています。モデルは管理者プレフィックスになっている場合のみ(私のモデルは管理者とメインサイトで同じなので) – hamidreza