2013-07-16 41 views
0

我想從config.yml中取出symfony2實體中的值。從實體中獲取config.yml值

config.yml:

my_example_bundle: 
    slug_pattern: "/^[a-z0-9\._\-]{2,20}$/" 

實體:

function setUsername($username) { 
    $pattern = ""; // need to get it from slug_pattern in config.yml 

    if (!preg_match($pattern, $username)) { 
     throw new \InvalidArgumentException("Username has to match " . $pattern); 
    } 
    ... 
} 

謝謝!

更新: Dev4TheWeb發佈了很好的解決方案過於:http://dev4theweb.blogspot.ch/2012/08/how-to-access-configuration-values.html

回答

1

問題與主義實體是當他們從數據庫中檢索。它們通過構造函數傳遞而不被構造函數傳遞,因此可能與編寫new語句時的依賴性不同。

因此,讓您的模型意識到這一點可能是一個壞主意。 您可能更喜歡使用外部服務,並喜歡貧血模型(簡單數據對象)。 然後,您可以將所有邏輯委派給專門的服務。

如果你不想,你仍然可以手動注入你的依賴(例如在構造函數中)。這隻有在你手工刪除實體時纔有效。

然後,您必須利用doctrine postLoad事件注入相同的依賴關係(例如通過setter)。 這種重複有點不好。

+0

有一個其他的解決方案是一個不錯的主意:http://dev4theweb.blogspot.ch/2012/08/how-to-access -configuration-values.html – Ueli

+0

它和sfConfig是symfony1一樣好。單例模式打破了良好的可測性。 – Florian