問題タブ [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.

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

symfony - Gedmo ログ可能ですが、ユーザー名を保存していません

@Gedmo\Versionedアノテーションを使用して製品フィールドを変更すると、新しいバージョンが作成されるように、エンティティでログを記録しています。ただし、唯一の問題は、usernameフィールドが残っていることNULLです。Sonata Admin バックエンドで更新が実行されるため、認証されたユーザーが存在します。

正しく動作していないように見えますlog_user_lookup_idxが、これに必要な特定の設定はありますか?

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

symfony - Gedmo教義ツリー拡張でparent_idを使用して既存の階層がある場合、「クロージャー」テーブルにデータを入力する方法は?

parent_id 列を持つ既存のカテゴリ階層があります。Gedmo ツリーの拡張機能と更新スキーマを構成しました。「レベル」列がカテゴリ テーブルに追加され、category_closure テーブルが作成されていることがわかります。

category_closure テーブルにデータを入力するにはどうすればよいですか。ここにはない

ClosureTreeRepository のメソッド。TreeListenerをトリガーするようにカテゴリレコードを更新しようとしましたが、まだcategory_closureにデータがありません。

category_closure テーブルに階層を設定するにはどうすればよいですか?

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

symfony - Symfony2: EasyAdminbundle + StofDoctrineExtensionsBundle + VichUploaderBundle

管理に EasyAdminBundle を使用するプロジェクトがあります。「投稿」と呼ばれる 1 つのエンティティには、変更について追跡したい「タイトル」、「画像」、および「投稿」フィールドがあります。プロパティ「image」には、画像のファイル名のみが保存されます。完全なアップロード プロセスは、VichUploaderBundle によって管理されます。

履歴に使用されるため、変更時に古いイメージ ファイルが削除されないようにするには、どのように/どこでメッシュを作成できますか?

0 投票する
3 に答える
854 参照

symfony - Symfony2のservices.ymlでセキュリティユーザーの名前をリスナーに渡す

ユーザーがエンティティに加えた変更を追跡するために、Gedmo Loggable を使用しています。デフォルトでは、ユーザー名は変更ごとに保存されませんが、リスナーに提供する必要があります。

この例は、Loggable のドキュメントにあります。

これは、次の 2 つの理由でうまくいきません。

  1. コントローラーではなく、services.yml にリスナーを登録しています
  2. 例のように既知のユーザー名を保存するのではなく、ログインしているユーザーのユーザー名を保存したい

loggableListener のメソッド setUsername は、文字列または文字列を提供するメソッド getUsername を持つオブジェクトを想定しています。

いずれかをリスナーに渡すにはどうすればよいですか? security_token を渡す方法を見つけましたが、これでは不十分です。私が現在持っているのはこれです:

私も Blameable を使用しており、同様の問題に対する優れた回避策を見つけました (リスナー全体がオーバーライドされます)。Loggable についても同じことを試みましたが、これはもう少し複雑なようです。

主な質問: セキュリティ ユーザー オブジェクト (またはそのユーザー名) を services.yml のリスナーに渡すにはどうすればよいですか?

アップデート

Matteo は、関数の結果をパラメーターとしてリスナーに渡す方法を教えてくれました。これで問題はほぼ解決します。token_storageが与えられたときにユーザー名を提供する別のサービスがあります。しかし、これは、別のサービスにパラメーターとして渡されるパラメーターをサービスに渡す必要があることを意味します。この例では、次のことを説明します。

問題は、このコンテキストでは @security.token_storage が受け入れられないことです。メソッド getUsername() にパラメーターを渡すにはどうすればよいですか?

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

doctrine-orm - Doctrine Extension Loggable - フィールドの新しい値の代わりに古い値をログに記録します

Doctrine の Loggable 拡張機能を実装しました。しかし、今、私は次のケースを持っています。オブジェクトの「ステータス」を追跡したい。しかし、オブジェクトはすでにデータベースに存在し、それぞれに対応するステータスがあります。更新すると、log_entry にオブジェクトの最初のログが挿入され、そのステータスの新しい値が挿入されます。(ステータスをアクティブからサスペンドに変更し、ログエントリにサスペンドが挿入されたとしましょう)

どこにも記録されていないため、この瞬間から「アクティブ」ステータスを元に戻すことはできません。いくつかの方法で対処できますが、変更が発生する前に、ログ内のオブジェクトが現在のバージョンを保存しないように、新しいバージョンを挿入する代わりに、その Loggable Extension にいくつかのオプションがありますか?