簡體   English   中英

Symfony 2.3使用handleRequest驗證表單的速度非常慢

[英]Symfony 2.3 validating form with handleRequest is insanely slow

我正在提交一個包含許多字段的表單,並嘗試使用Symfony文檔中顯示的handleRequest($request)對其進行驗證。 我的實體很大,並且與其他實體有很多關系。 handleRequest($request)正在驗證提交的每個表單字段並檢查錯誤。

發現的問題是,在提交我的主要實體(例如某人的辦公室)的相關實體的ID時, handleRequest將在內部獲取該相關實體的所有對象(該相關實體的完整表,所有人員)並進行補水他們作為對象。

我認為它應該只是檢查提交的ID在其他表中是否存在,獲取該相關實體對象並檢查是否存在錯誤(而不是獲取所有相關表)。

如果檢查並調試Symfony2 handleRequest的源代碼,則可能容易在此行發現相同的問題:

表格/ form.php的

// Normalize data to unified representation
$normData = $this->viewToNorm($viewData);
$value = $transformers[$i]->reverseTransform($value);

我如何仍能在不處理此問題的情況下驗證表單,這使使用handleRequest($request)驗證表單的速度異常之慢?

如果我不使用handleRequest進行驗證,它會自動將錯誤添加到我的每個字段的表單中,我如何手動驗證每個字段,然后又將錯誤添加到我的每個字段的表單中並在下一個視圖中顯示呢?

這個問題有點模糊,答案在很大程度上取決於您的特定形式。 請發布給您最困難時間的表單定義。

檢查以確保您不是此處的EAGER提取關聯。

handleRequest()將采用請求對象並構造您的表單描述的模型,就像您的表單定義的那樣。

如果需要這些對象才能在您的初始表單上向用戶顯示數據,或在提交時驗證數據,則“ entity ”字段類型將獲取您在定義中告知您的所有對象。 例如,如果顯示的是較大的選擇列表,則需要所有這些數據。

過去我也遇到過類似的問題,這是因為我使用了很多選擇字段,這些選擇字段被用作一系列的多個選擇復選框。 我的瓶頸實際上在樹枝層中,同時渲染了我存儲為獨立實體的數千個復選框。

我從一組復選框切換到了一個單選框,這極大地提高了我的速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM