1

我有很多输入,但我的表单中没有连接任何模型,如下所示:

我的观点是这样,我把它展示给其他用户以检测我的问题

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\Tour */

$this->title = 'ثبت تور';

$this->registerJsFile('@web/storage/js/agency/tour.js', ['depends' => [
   \yii\web\JqueryAsset::className(), 
   \yii\validators\ValidationAsset::className(), 
   \yii\widgets\ActiveFormAsset::className()],
]);    

<?php $form = ActiveForm::begin([
    'id' => 'jqTourStep1Form'
]); ?>

<div class="col-xs-6 pull-right padding0">
    <?= $form->field($model, 'title_fa')->textInput() ?>
</div>

<div class="form-group col-xs-4 padding0 pull-right idTesttt">
    <label class="control-label">Start Date</label>
    <input type="text" name="startDate[]" id="startDateTest" class="form-control">
    <span class="help-block"></span>
</div>

<?= Html::submitButton('Next', ['class' => 'btn btn-success']) ?>

<?php ActiveForm::end(); ?>

旅游.js:

/* Validation */
$('#jqTourStep1Form').yiiActiveForm('add', {
    id: 'startDateTest',
    name: 'startDate',
    container: '.idTesttt',
    input: '#startDateTest',
    error: '.help-block',
    validate:  function (attribute, value, messages, deferred, $form) {
        yii.validation.required(value, messages, {message: "Validation Message Here"});
    }
});

我想客户在 Yii 2 中验证这个输入。

我怎样才能做到这一点 ?

4

2 回答 2

2

您应该使用each核心验证器:每个 Validator。但是你应该使用 ActiveForm 来生成表单。

public function rules()
    {
        return [
            // checks if every category ID is an integer
            ['categoryIDs', 'each', 'rule' => ['integer']],
        ]
    }

将 JS 代码添加到客户端验证:

jQuery('#form-id').yiiActiveForm("add", {
        "id":        "input-id",
        "name":      "input-name",
        "container": "#container-id or unique .container-class of this input",
        "input":     "#input-id or unique .input-class",
        "validate":  function (attribute, value, messages, deferred, $form) {
            yii.validation.required(value, messages, {"message": "Validation Message Here"});
        }
    }
);
于 2017-05-30T11:20:37.257 回答
0

您可以在不使用模型的情况下创建特定验证器类的对象:

$validator = new \yii\validators\DateValidator();

并验证任何值

$error = null;
$validator->validate($startDate, $error);

方法validate()将返回布尔值并添加到$error有关错误的变量消息中。您可以在此页面上阅读并选择特定的验证器

于 2017-05-30T14:06:36.550 回答