問題タブ [gedmo-loggable]
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.
symfony - Gedmo ログ可能ですが、ユーザー名を保存していません
@Gedmo\Versioned
アノテーションを使用して製品フィールドを変更すると、新しいバージョンが作成されるように、エンティティでログを記録しています。ただし、唯一の問題は、username
フィールドが残っていることNULL
です。Sonata Admin バックエンドで更新が実行されるため、認証されたユーザーが存在します。
正しく動作していないように見えますlog_user_lookup_idx
が、これに必要な特定の設定はありますか?
symfony - Gedmo教義ツリー拡張でparent_idを使用して既存の階層がある場合、「クロージャー」テーブルにデータを入力する方法は?
parent_id 列を持つ既存のカテゴリ階層があります。Gedmo ツリーの拡張機能と更新スキーマを構成しました。「レベル」列がカテゴリ テーブルに追加され、category_closure テーブルが作成されていることがわかります。
category_closure テーブルにデータを入力するにはどうすればよいですか。ここにはない
ClosureTreeRepository のメソッド。TreeListenerをトリガーするようにカテゴリレコードを更新しようとしましたが、まだcategory_closureにデータがありません。
category_closure テーブルに階層を設定するにはどうすればよいですか?
symfony - Symfony2: EasyAdminbundle + StofDoctrineExtensionsBundle + VichUploaderBundle
管理に EasyAdminBundle を使用するプロジェクトがあります。「投稿」と呼ばれる 1 つのエンティティには、変更について追跡したい「タイトル」、「画像」、および「投稿」フィールドがあります。プロパティ「image」には、画像のファイル名のみが保存されます。完全なアップロード プロセスは、VichUploaderBundle によって管理されます。
履歴に使用されるため、変更時に古いイメージ ファイルが削除されないようにするには、どのように/どこでメッシュを作成できますか?
symfony - Symfony2のservices.ymlでセキュリティユーザーの名前をリスナーに渡す
ユーザーがエンティティに加えた変更を追跡するために、Gedmo Loggable を使用しています。デフォルトでは、ユーザー名は変更ごとに保存されませんが、リスナーに提供する必要があります。
この例は、Loggable のドキュメントにあります。
これは、次の 2 つの理由でうまくいきません。
- コントローラーではなく、services.yml にリスナーを登録しています
- 例のように既知のユーザー名を保存するのではなく、ログインしているユーザーのユーザー名を保存したい
loggableListener のメソッド setUsername は、文字列または文字列を提供するメソッド getUsername を持つオブジェクトを想定しています。
いずれかをリスナーに渡すにはどうすればよいですか? security_token を渡す方法を見つけましたが、これでは不十分です。私が現在持っているのはこれです:
私も Blameable を使用しており、同様の問題に対する優れた回避策を見つけました (リスナー全体がオーバーライドされます)。Loggable についても同じことを試みましたが、これはもう少し複雑なようです。
主な質問: セキュリティ ユーザー オブジェクト (またはそのユーザー名) を services.yml のリスナーに渡すにはどうすればよいですか?
アップデート
Matteo は、関数の結果をパラメーターとしてリスナーに渡す方法を教えてくれました。これで問題はほぼ解決します。token_storageが与えられたときにユーザー名を提供する別のサービスがあります。しかし、これは、別のサービスにパラメーターとして渡されるパラメーターをサービスに渡す必要があることを意味します。この例では、次のことを説明します。
問題は、このコンテキストでは @security.token_storage が受け入れられないことです。メソッド getUsername() にパラメーターを渡すにはどうすればよいですか?
doctrine-orm - Doctrine Extension Loggable - フィールドの新しい値の代わりに古い値をログに記録します
Doctrine の Loggable 拡張機能を実装しました。しかし、今、私は次のケースを持っています。オブジェクトの「ステータス」を追跡したい。しかし、オブジェクトはすでにデータベースに存在し、それぞれに対応するステータスがあります。更新すると、log_entry にオブジェクトの最初のログが挿入され、そのステータスの新しい値が挿入されます。(ステータスをアクティブからサスペンドに変更し、ログエントリにサスペンドが挿入されたとしましょう)
どこにも記録されていないため、この瞬間から「アクティブ」ステータスを元に戻すことはできません。いくつかの方法で対処できますが、変更が発生する前に、ログ内のオブジェクトが現在のバージョンを保存しないように、新しいバージョンを挿入する代わりに、その Loggable Extension にいくつかのオプションがありますか?