我使用symfony.com的食譜文章來實現圖像的文件上傳選項。Symfony2:編輯文件上傳
現在我想加載其他圖像到實體。
編輯默認的策略是:1。 取出來DB 2.進樣的成晶 3.堅持
不知怎的,使用文件上傳時,這種策略不工作了(原則不執行事件)
我還能做些什麼來使圖片可編輯的文章?
我使用symfony.com的食譜文章來實現圖像的文件上傳選項。Symfony2:編輯文件上傳
現在我想加載其他圖像到實體。
編輯默認的策略是:1。 取出來DB 2.進樣的成晶 3.堅持
不知怎的,使用文件上傳時,這種策略不工作了(原則不執行事件)
我還能做些什麼來使圖片可編輯的文章?
食譜不處理更新,特別是在只有文件改變的情況下。
在這種情況下,不會觸發PreUpdate
事件,所以你需要$em->persist($entity)
之前手動觸發$entity->preUpload()
,使文件上傳獲取任何情況下處理(preUpload將改變$entity->path
所以會出現持續存在)
如果你只改變上傳字段的生命週期不運行上傳方法,在食譜報道在報價框,下面的解決方案:
的更新前和PostUpdate回調纔會觸發,如果有 變化在一個實體的fie ld是持久的。這意味着 默認情況下,如果您僅修改$ file屬性,則不會觸發這些事件 ,因爲屬性本身不是直接通過Doctrine持續存在的 。一種解決方案是使用持續到Doctrine的更新字段 ,並在更改 文件時手動對其進行修改。
添加一個虛擬場控制器更新之前堅持的事件本duscussion的建議:
https://github.com/symfony/symfony-docs/pull/564
public function setFile(UploadedFile $file)
{
$this->file = $file;
$this->updatedAt = new \DateTime();
}
嗨, 您選擇的權利。當沒有字段更新時,生命週期回調事件不會被觸發:) – bodokaiser 2012-04-02 17:42:52
如果使用Knp DoctrineExtensions,則可以在持有文件上載邏輯的實體上使用Timestampable,並使用$ entity-> updateTimestamps();在$ em-> persist()之前,所以它會更新你需要的虛擬字段;) – 2015-04-30 09:54:47