過去 3 日間、壁に頭をぶつけているという問題があります (そして、google/stackoverflow の調査ではあまり結果が得られませんでした)。
私は現在、別の開発者 (元の開発者が去った) によって開発されたアプリケーションを保守しています。アプリケーションは Symfony 2.6 にあります。その中には、Voter の概念を通じてアクセスを処理するロジックがあります。アプリケーション ロジックは次のようになります。URL には顧客 (アプリケーション) 名が含まれます。たとえば、顧客を TEST と名付けましょう。URL は次のようになります: myapplication.com/Test この URL にアクセスすると、要求を取得して顧客をルーター コンテキストにアタッチする EventListner (onKernelRequest、31 に接続) があります。ここ:
if (!$event->isMasterRequest()) { return; }
$request = $event->getRequest();
$requestContext = $this->router->getContext();
if ($company = $request->attributes->get('company')) {
$requestContext->setParameter('company', $company);
}
これにより、基本的に、引数を渡すことでプロバイダー サービスをロードできます。
<argument type="expression">service('request_stack').getCurrentRequest().get('company')</argument>
その理由は、アプリケーションには独自のデータベース (デフォルト) があり、各顧客には独自のデータベースがあるためです (サードパーティの ETL によって生成されるため、これらのデータベースのセグメントのみを制御できます)。
現在、サービスの投票者の定義は、これらのプロバイダーのいずれかに依存しています。基本的に、顧客のデータベースから可能な許可のリスト (マップ) を取得します (顧客ごとに異なります)。残念ながら、現時点では、すべてがクラッシュします。「... という名前のマッピング ファイルが見つかりません」というエラーが表示されます。彼は、クライアント マッピング フォルダーではなく、既定のマッピング ファイルからファイルを取得しようとしています。
appdebugProjectContainer を「ハッキング」し、print_r()|die を追加して requestStack を完全に表示すると、完全に空に見えます。(したがって、リクエストはまったく前処理されません)。わからないことがありますか?