2017-01-26 76 views
3

我目前正在浪費大量時間做一件簡單的事情。刪除單個字段的驗證器約束條件

我想從特定字段的symfony中刪除表單檢查器/驗證器。

添加此事件偵聽到建築工地工作確定:

->addEventListener(
    FormEvents::POST_SUBMIT, 
    function (FormEvent $event) { 
     $event->stopPropagation(); 
    }, 
    900 
) 

但禁用檢查對於所有的領域,我只想要一個領域。

'required' => false'csrf_protection' => false不這樣做的伎倆

任何幫助的感謝。

回答

0

約束可能來自很多方向。從你的問題我不確定你想擺脫的限制來自哪裏。

  • 的appbundle /資源/驗證。[陽明| XML | PHP]尋找你的實體名稱,然後字段名稱只是發表評論/刪除或如果發現修改的約束。

  • 表單類型可以申請約束symfony doc,如果你有你的類型裏面的約束只要打開你的EntityType.php類並查找字段名,並檢查是否有用於constraints

  • required選項內選擇類型和<input type="date">可以在客戶端應用約束,所以確保它不是那種你想擺脫的約束,你說你刪除了required,但也許input type field堅持。

  • 然後你就可以有約束應用於內部事件從一個包來使用搜索源文件中的錯誤信息可以幫助您找到負責該隱藏的約束

一個Symfony的約束代碼應該在失敗時返回人類可讀的錯誤消息。

P.S. required不是一個約束,但可以看起來像!

+0

首先,感謝您的回覆。 我有一個很多領域的形式,如名稱簡歷等... 和一個實體字段稱爲標籤。 用戶可以使用Javascript直接在字段中添加標籤,但symfony的驗證器 表示該值不正確,因爲它不是一個真正的用戶選擇 其字符串的實體。 我只想讓驗證器跳過這個特殊字段的任何檢查,如$ event-> stopPropagation();做。 除了stopPropagation是爲所有字段做的,我只是想知道如何將它應用於一個特定的領域。 我希望我很清楚,再次感謝您的回覆 – ArkanoydHD

+0

你的問題來自變壓器不約束你的表單應該使用這種類型[collectionType進入symfony書](http://symfony.com/doc/current/reference/forms/ types/collection.html)仔細查看'allow_add,prototype和entry_type','entry_type'對於你的情況非常重要,因爲它會告訴symfony如何轉換來自'prototype'的數據,根據原型添加新的元素;)閱讀好的先生:) – greenseed