2016-06-07 96 views
1

我真的很掙扎,我的佈局進入Yii2。爲了儘可能地接近最新的藝術,我讀了關於造型ActiveFieldActiveForm,這有點有用,但不是100%。也許你看到了什麼是錯的。Yii2中的樣式表單(ActiveField/ActiveForm)

讓我與我的HTML,我想有開始的:

// normal state without any validations 
<p> 
    <label for="signup_name">Name, Surname:<span class="required">*</span></label> 
    <input type="text" name="signup_name" id="signup_name" value="" /> 
</p> 

// input field after validation fails (ajax + reload) 
<p> 
    <label for="signup_email">E-mail:<span class="required">*</span></label> 
    <input class="error-input" type="text" name="signup_email" id="signup_email" value="" /> 
    <span class="error-msg">E-mail must be filled !</span> 
</p> 

這是當前的狀態,在這種佈局是:

<p> 
    <label class="control-label" for="signupform-username">Username</label> 
    <input id="signupform-username" class="form-control" type="text" name="SignupForm[username]"> 
    <span class="error-msg">Username may not be empty</span> 
</p> 

這是我的PHP/Yii2部分

<?php 
$form = ActiveForm::begin([ 
    'id' => 'form-signup', 
    'fieldConfig' => [ 
     'template' => "<p>{label}{input}{error}</p>", 
     'errorOptions' => [ 
      'tag' => 'span', 
      'class' => 'error-msg', 
     ], 
    ], 
]); 

echo $form->field($model, 'username', [ 
    'inputTemplate' => '{input}', 
])->textInput(['autofocus' => false]) 
?> 

的問題:

  • <span class="error-msg">總是被渲染,即使沒有錯誤呢。澄清:跨度沒有內容,呈現如下: <span class="error-msg"></span>(我希望它在那裏,如果有實際的錯誤,而不是作爲一個佔位符之前
  • 我不知道如何應用錯誤-Class的輸入,其作品爲ajax -validation,還有沒有JS-方式。

任何幫助表示讚賞,感謝

回答

2

你可以爲每個字段添加類,如果你想

<?= $form->field($model, 'title')->textInput(['class'=>'form-control'])->label('Your Label',['class'=>'label-class']) ?> 
0

嘗試禁用輸入字段的AJAX驗證。

echo $form->field($model, 'username', ['enableAjaxValidation' => false]); 

echo $form->field($model, 'username', ['enableClientValidation' => false]);