私はsymfony.comの料理本の記事を使って画像のファイルアップロードオプションを実装しています。Symfony2:ファイルのアップロードを編集する
他のイメージをエンティティにロードしたいと思います。
編集のデフォルトの戦略は次のとおりです。 1.どういうわけか、この戦略は、ファイルのアップロードを使用しているとき(教義が実行されないもう動作しません
を永続フォーム 3にDB 2を注入外の取得イベント)
編集可能な記事を作成するには他に何ができますか?
私はsymfony.comの料理本の記事を使って画像のファイルアップロードオプションを実装しています。Symfony2:ファイルのアップロードを編集する
他のイメージをエンティティにロードしたいと思います。
編集のデフォルトの戦略は次のとおりです。 1.どういうわけか、この戦略は、ファイルのアップロードを使用しているとき(教義が実行されないもう動作しません
を永続フォーム 3にDB 2を注入外の取得イベント)
編集可能な記事を作成するには他に何ができますか?
料理の本はの更新を処理しません。特に、ファイルのみが変更された場合には、は更新を処理しません。あなたは、ファイルのアップロードはどのような場合に取り扱われますように、手動で$em->persist($entity)
前$entity->preUpload()
をトリガーする必要があるので、この場合は
PreUpdate
イベントが
$entity->path
が変更されます)、トリガされません 変更がある場合は更新前とPostUpdateコールバックのみがトリガされ
:
あなたは料理で、ライフサイクルがアップロード方法を実行するだけでなく、アップロードフィールドを変更する場合は、以下のように引用ボックスでソリューションを報告していますエンティティの偽りの中の1つldが保持されます。つまり、デフォルトで$ fileプロパティのみを変更した場合、これらのイベント はトリガーされません。これは、プロパティ自体がDoctrineによって永続化された ではないためです。 1つの解決策は、Doctrineに保存された更新されたフィールド を使用し、ファイルを に変更するときに手動で修正することです。
このduscussionによって示唆として前にイベントを持続し、コントローラに更新するために、ダミーのフィールドを追加します。
https://github.com/symfony/symfony-docs/pull/564
public function setFile(UploadedFile $file)
{
$this->file = $file;
$this->updatedAt = new \DateTime();
}
こんにちは、 youreの権利。フィールドが更新されない場合、ライフサイクルコールバックイベントは発生しません:) – bodokaiser
Knp DoctrineExtensionsを使用する場合は、ファイルアップロードロジックを保持するエンティティでTimestampableを使用し、$ entity-> updateTimestamps();を使用します。 $ em-> persist()の前に必要なダミーフィールドを更新します;) –