Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 客户端验证Yii2中的阵列输入_Php_Yii2_Yii2 Validation - Fatal编程技术网

Php 客户端验证Yii2中的阵列输入

Php 客户端验证Yii2中的阵列输入,php,yii2,yii2-validation,Php,Yii2,Yii2 Validation,我的表格中有许多输入,但没有连接任何模型,如下所示: 我的观点是这样的,我把它展示给其他用户来检测我的问题是什么 <?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

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

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

<?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(); ?>
我想在Yii 2中验证这个输入


如何执行此操作?

您应该使用
每个
核心验证器:。但您应该使用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"});
        }
    }
);

您可以创建特定验证程序类的对象,而无需使用模型:

$validator = new \yii\validators\DateValidator();
并验证任何值

$error = null;
$validator->validate($startDate, $error);
方法
validate()
将返回布尔值并添加到变量
$error
有关错误的消息。
您可以在此阅读并选择特定的验证器

我在模型中设置了一个属性,并在视图中使用了您的代码和下面的代码,但它还不起作用,请帮助我解决此问题。它不适用于客户端验证。我需要客户端验证。所以它是有效的,但不像你想要的。下次指定问题,而不是说“不工作”。回答已使用客户端验证更新。我使用了您的客户端验证代码,但收到以下错误:yii.activeForm.js:242未捕获类型错误:无法读取未定义的属性“attributes”,我的代码是:/*validation*/$(“#jqTourStep1Form”)。yiiActiveForm('add',{id:'startDateTest',name:'startDate',container:'.idTesttt',输入:'#startDateTest',错误:'.help block',验证:函数(属性,值,消息,延迟,$form){yii.validation.required(值,消息,{message:'validation message Here});});
$error = null;
$validator->validate($startDate, $error);