問題タブ [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.
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_items
var に適切なコンテンツが取り込まれ、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 で間違ったアイテムが表示されます。
私はここで何を間違っていますか?キャッシングが難しいことは知っていますが、確かにここに何かが欠けています
php - (Symfony3) FOSUserBundle にカスタム プロパティを追加して永続化する方法は?
カスタム プロパティ (psptCode) を User エンティティに追加して、UserBundle を拡張しようとしています。これは私のユーザークラスです:
データベース スキーマを作成すると、カスタム プロパティが作成されますが、カスタム プロパティに値を保存しようとすると、データベースに保持されません。
ユーザーは次のように保存されます。
そのため、ユーザーのカスタム プロパティを保存できません。助けてください!