Yii2客户端验证不起作用

时间:2016-07-23 22:39:54

标签: validation yii2

我安装了干净的yii2-advanced模板。我在数据库中创建了一个包含idtest字段的表格。在我的Model我写了rule

public function rules()
{
    return [
        [['test'], 'required'],
    ];
}

我还为id指定了唯一的form。 但验证不起作用。输入smth到controlfocus out后,我在consoleUncaught TypeError: Cannot read property 'required' of undefined中出错了。这可能是什么原因?

修改

型号:

<?php
namespace backend\models;
use Yii;
use yii\base\Model;
class ContactForm extends Model
{
    public $name;
    public function rules()
    {
        return [
            [['name'], 'required'],
        ];
    }
}

查看:

<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>
<div class="site-contact">
    <div class="row">
        <div class="col-lg-6">
            <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
                <?= $form->field($model, 'name')->textInput() ?>
                <?= Html::submitButton('Submit', ['class' => 'btn btn-success']) ?>
            <?php ActiveForm::end(); ?>
        </div>
    </div>
</div>

控制器操作:

use backend\models\ContactForm;
public function actionContact()
{
    $model = new ContactForm();
    if ($model->load(Yii::$app->request->post())) {
        return $this->refresh();
    } else {
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

2 个答案:

答案 0 :(得分:0)

使用Rules()时,必须首先键入属性(或属性数组),然后输入规则类型(顺便说一下,也可以是自定义函数):

[['name'], 'required'] // setting the attribute "name" as required

您可以阅读有关验证和规则的更多信息here

答案 1 :(得分:0)

如果您已为表单字段应用唯一ID,请尝试将其删除,Yii2会自行生成ID并相应地应用验证消息。