我認爲在symfony2 Form
和Validator
組件上創建客戶端表單驗證將非常有用。在Symfony2中創建組合的客戶端和服務器端驗證
做到這一點的最好方法是將驗證約束傳遞給窗體視圖。 有了這些信息,將有可能使呈現一個表單域是這樣一個模板:
<div>
<label for="form_email">E-Mail</label>
<input
id="form_email" type="text" name="form[email]" value=""
data-validation-constraints='{"NotBlank":{},"MinLength":{"limit":6}}'
/>
</div>
然後JavaScript的部分將是找到具有data-validation-constraints
屬性的所有<input>
元素和創建正確的驗證爲他們。
要將驗證約束傳遞給窗體視圖,我認爲最好的方法是創建一個窗體類型的擴展。這是我的問題的重點:這是正確的方法嗎?這怎麼可能?
此刻我的表單類型的擴展名看起來像這樣:
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormBuilder;
class FieldTypeExtension extends \Symfony\Component\Form\AbstractTypeExtension{
public function getExtendedType(){
return 'field';
}
public function buildView(FormView $view, FormInterface $form)
{
// at this point i didn't find a way to get the
// validation constraints out of the $form
// the `getAllValidationConstraints` here is just an example
$view->set('validation_constraints', $form->getAllValidationConstraints());
}
}
我怎樣才能得到應用到一個表單字段都驗證約束了FormInterface對象的?
@ alessandro1997這束試圖解決正如我所描述的同樣的問題,但在一個非常不同的方式新的Symfony 2束。它目前僅適用於實體中註釋中定義的約束條件。我想得到所有的限制,不管它們來自哪裏。我想用'isValid'方法使用相同的機制來查找constaints。 – ausi