問題タブ [symfony-3.2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
374 参照

php - Symfony の外部で作成された Access キャッシュ項目は、時々しか機能しません。なぜですか?

従来の Zend Framework 1 (ZF1) アプリケーションと Symfony 3.2.6 (SF) アプリケーションを統合しています。一言で言えば、それがどのように機能するかです:

  • セッション管理、ログイン ページ (一意のエントリポイント)、および多くのものは、ZF1 アプリケーションと ZF1 自体によって管理されます。
  • Zend コントローラー、テンプレート、ヘルパー、またはその他の SF 側からの呼び出しはありません。

例: - http://localhost/login=> は ZF1 によって管理されます - http://localhost/sf/quote=> は SF によって管理されます (キーは/sf/URL 内の です)。

これは、Apache VH に次のようなルールがあることを意味します: Symfony/sf/*に送信された URL 上の各リクエストは、app.php|app_dev.phpこのルールをバイパスし、ZF1 に直接送信されます。

最初に行うことは、レガシー ZF1 アプリケーションを使用してアプリケーションにログインすることです。ログインに成功したら、ダッシュボードにリダイレクトし、次のコードを使用してレイアウトNavigationController.phpから a を呼び出します: .main.phtml$this->action('buildallmenu', 'navigation');

このようなコードでは、DB からメニューが生成され、以下のコードを使用して、ZF1 からも SF からも DB にアクセスする必要がなく、もう一度 DB にアクセスしたくないので、キャッシュしようとしています。

session_id()メニューはユーザーごとに「一意」であるため、 Redissession_id()キャッシュ項目に追加するのが理にかなっています。

そこから、$cached_itemsvar に適切なコンテンツが取り込まれ、Redis に保存されていることがわかります。

Symfony コントローラーにアクセスする方法は、以前に説明した「URL にアクセスする」方法です。URL を次のように呼び出したとしましょう:http://localhost/sf/quoteこれはルールを実行してリダイレクトしapp_dev.phpます。これは、現在 Symfony を使用していることを意味します。

私が最初にしたことは、session_id()(値を印刷してsession_id())チェックし、ZF1によって作成された値と比較して一致させることでした。

SF ベース テンプレートは、コントローラーを次のように呼び出します{{ render(controller('CommonBundle:Setup:GenerateMenuItems')) }}。テンプレートから呼び出される関数の内容は次のとおりです。

mmi_pool定義は次のとおりです。

でのキャッシュの構成config.yml方法

アップデート

初めてログインしたときに、このコードが実行されないことがわかりました。

理由はわかりません。これにより、キャッシュに間違ったアイテムが保存されるため、SF で間違ったアイテムが表示されます。

私はここで何を間違っていますか?キャッシングが難しいことは知っていますが、確かにここに何かが欠けています

0 投票する
0 に答える
162 参照

php - (Symfony3) FOSUserBundle にカスタム プロパティを追加して永続化する方法は?

カスタム プロパティ (psptCode) を User エンティティに追加して、UserBundle を拡張しようとしています。これは私のユーザークラスです:

データベース スキーマを作成すると、カスタム プロパティが作成されますが、カスタム プロパティに値を保存しようとすると、データベースに保持されません。

ユーザーは次のように保存されます。

そのため、ユーザーのカスタム プロパティを保存できません。助けてください!