2017-04-24 48 views
0

我有一個小問題來處理表單提交後的圖像驗證。還有就是我的表單提交功能:!提交後銀條紋圖像驗證失敗

public function FormAjouterSubmit($data, $form) { 

    .... 

    Session::clear("PageAuteur.FormAjouterSubmit"); 

    $texte = "Veuillez remplir ce champ"; 

    if (!$data['ImageID']) { 
     Session::set("PageAuteur. FormAjouterSubmit", $data); 
     $form->addErrorMessage('Image', $texte, 'bad'); 
     return $this->redirectBack(); 
    } 

    .... 

} 

我已經試過$數據[「圖像標識」]和$數據[「形象」]和形式返回回並清除我的會話數據。我做錯了什麼?

+0

有沒有你不使用'RequiredFields'驗證理由嗎?將驗證構建到提交函數通常是不好的做法。 – bummzack

+0

是的。它是使用向上箭頭圖像在每個字段下方創建自定義錯誤消息來指向一個字段。 – StefGuev

+0

這就是'RequiredFields'應該做的事情......它看起來如何(例如向上箭頭)可以通過CSS輕鬆實現。如果你需要進一步的定製,只需要子類'RequiredFields'? – bummzack

回答

1

您可以使用RequiredFields來驗證所需的表單字段。 Form構造函數接受第五個參數,您可以在其中提供必需的字段驗證程序。

實施例:

$form = Form::create(
    $this, 
    'FormAjouter', 
    $fields, 
    $actions, 
    RequiredFields::create(['Image']) 
); 

定製驗證消息的最簡單的方法是使用i18n。如果您的默認語言環境是法語,板條箱文件命名爲mysite/lang/fr.yml,你可以把這樣的事情:

Form: 
    FIELDISREQUIRED: 'Veuillez remplir le champ {name}' 

{name}將與您的實際現場標題來代替。當然你也可以省略佔位符。

如果您需要單個表單字段的不同文本,則可以在需要自定義錯誤消息的每個字段上使用setCustomValidationMessage

例子:

$uploadField = FileField::create('Image'); 
$uploadField->setCustomValidationMessage('Please upload a file'); 
+0

不錯!我永遠不會使用setCustomValidationMessage。我將刪除我的代碼並使用你的代碼。這是偉大的工程,是時候更新我的所有代碼!謝謝@bummack。 – StefGuev

+0

這很奇怪,自定義驗證消息適用於Image,但不適用於TextField等其他字段。它出現了一個HTML5風格的彈出書面«請填寫此字段»。 – StefGuev

+0

@StefGuev這只是基本的HTML5驗證。它發生在您的數據發送到服務器之前(純粹在瀏覽器中) – bummzack