2017-08-29 60 views
0

我有一個基於Silex的應用程序,我使用Doctrine作爲我的ORM。在Symfony堆棧外使用UniqueEntity

我有一個問題,我試圖讓用戶試圖重用電子郵件時出現乾淨的錯誤,我發現驗證器UniqueEntity,但它似乎是爲Symfony的完整堆棧版本設計的。

我的問題是,這是真的嗎?我正在做一個假設,因爲我沒有找到任何人在Symfony之外成功使用它。

我的第二個問題是,如果我無法使用UniqueEntity,那麼我的下一個最佳選擇是什麼?我正在使用Symfony驗證器組件,並且希望使用插入到該組件中的內容將其全部保留在同一代碼塊中。

+0

我在silex中使用它,但安裝相當複雜。我記得有必要創建2個服務:1.實現'ManagerRegistry'接口的服務。它是symfony中的'doctrine'服務的類比。 2.獨特的驗證服務(只是UniqueEntity驗證器的實例)。 –

+1

雖然有可能您可能會發現只實施您自己的唯一電子郵件標識符會更容易。 Symfony Doctrine Bridge UniqueEntity設計精良,可處理巨大的邊緣案例。你真正需要的是在自定義約束中包裝一個簡單的查詢。文檔告訴你如何。 – Cerad

+0

我只是做一個自定義的驗證器約束,聽起來像是更簡單的方法。 – Eman

回答

0

您可以在Silex中使用UniqueEntity。

以下是Doctrine ManagerRegistry實現 - saxulum/saxulum-doctrine-orm-manager-registry-provider的服務提供程序包。您也可以在READMEUniqueEntity驗證器中找到如何使用它的說明。

但是你可能想要實現你自己的UniqueEntity驗證器。

例如,如果您想驗證DTO對象(或任何非實體對象),因爲它不是由Symfony的的UniqueEntity驗證的支持(見GitHub上issue)。

+0

我實際上決定只是建立自己的自定義限制 – Eman