2012-03-25 108 views
2

我已經安裝了一個自定義驗證器,用於檢查生成的slug是否是唯一的。自定義驗證器不會輸出錯誤消息

現在我測試的驗證,它似乎驗證工作(形式沒有得到持續),但我沒有得到一個錯誤信息......

class Unique extends Constraint 
{ 
public $message = 'The value of "%property%" already exists.'; 
public $property; 

public function getDefaultOption() 
{ 
    return 'property'; 
} 

public function getRequiredOptions() 
{ 
    return array('property'); 
} 

public function validatedBy() 
{ 
    return 'loc_article_validator_unique_alias'; 
} 

public function getTargets() 
{ 
    return self::CLASS_CONSTRAINT; 
} 

}

的表單錯誤通過{{form_rest(form)}}在樹枝中呈現

所以我發現了這個問題。 問題在於Custom Constraints錯誤無法通過foreach呈現。他們必須打通

{{ form_errors(form) }} 

呈現我剩餘的問題現在:

1)我怎樣才能使自定義約束錯誤像所有其他錯誤?

2.)爲什麼擴展Constrain的Custom類需要CustomValidator服務的別名?

+0

您是否找到了答案? – Flukey 2012-04-05 15:53:21

回答

1

由這些線

public function getTargets() 
{ 
    return self::CLASS_CONSTRAINT; 
} 

你讓一個類約束至極意味着錯誤將顯示在整個窗體的頂部,而不是該字段旁邊的約束。

嘗試將它定義爲財產約束

public function getTargets() 
{ 
    return self::PROPERTY_CONSTRAINT; 
} 

如果這沒有幫助,請發表您的驗證定義和生成表單表單生成器代碼。