12

productエンティティがあり、製品の画像名を格納するフィールドimagesがありますが、画像名part_numberは一意のフィールドに依存するため、ユーザーが部品番号を間違えて編集したい場合は、私も持っています画像の名前を変更するには

私はこれを試しましたが、うまくいきません:

// class ProductsAdmin extends Admin

public function preUpdate($product) {

    $old_product = $this->getSubject();

    if ($old_product->getPartNumber() != $product->getPartNumber)
    {
         // change file names
    }

    $this->saveFile($product);
}

preUpdate() 関数で元の行を取得するにはどうすればよいですか?

4

2 に答える 2

22

公式の SonataAdmin Google フォーラムから取られたトピックによると: https://groups.google.com/forum/#!topic/sonata-devs/0zML6N13i3U クラス UnitOfWork を利用する必要があります: http://www.doctrine -project.org/api/orm/2.3/class-Doctrine.ORM.UnitOfWork.html

このようにしてください:

public function preUpdate($object)
{
    $em = $this->getModelManager()->getEntityManager($this->getClass());
    $original = $em->getUnitOfWork()->getOriginalDocumentData($object);
}

したがって、データベース エンティティの値の配列を取得します。例:エンティティの値のパスワードにアクセスするには、次のようにします。

$password = $original['password'];

それで全部です。楽しみ :)

于 2014-01-19T22:15:05.993 に答える
0

preUpdate 関数でドクトリンクエリを実行してデータベースから製品を取得すると、古いオブジェクトが得られます。その後、比較を行ってください。

于 2013-04-22T13:44:40.500 に答える