首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2客户端验证

Yii2客户端验证
EN

Stack Overflow用户
提问于 2017-08-28 12:25:14
回答 3查看 3.9K关注 0票数 0

在Yii2中,model.php中有一个条件验证。当我在textfield中写入一些没有通过验证的内容时,它在离开字段后不会出现错误消息。只有在创建一个klick之后,才会出现错误消息。在字段中写了一些东西之后,我需要做什么才能让消息出现。

代码语言:javascript
复制
<?php
['state', 'required', 'when' => function ($model) {
    return $model->country == 'USA';
}, 'whenClient' => "function (attribute, value) {
    return $('#country').val() == 'USA';
}"]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-29 10:43:39

在你的模型中:

代码语言:javascript
复制
 public function rules()
 {
    return [
        ['state', 'required', 'targetClass' => '\backend\models\State', 
        'message' => 'Your message here'],
    ];
 }

我不确定你的模型是在后端,所以你可以纠正你想要的。

在Controller中,您必须创建这样的函数:

代码语言:javascript
复制
public function actionValidation(){
    $model = new State();
    if(Yii::$app->request->isAjax && $model->load(Yii::$app->
    request->post())){
        Yii::$app->response->format = 'json';
        return ActiveForm::validate($model);
    }     
}

再走一步,以你的形式在一开始:

代码语言:javascript
复制
<?php $form = ActiveForm::begin(
                [
                    'enableAjaxValidation' => true,
                    'validationUrl' => Url::toRoute('state/validation')
                ]
        ); ?>

请注意,在上面的代码中,我写了'state/ validation ','state‘是您放置验证操作的控制器的名称。

票数 0
EN

Stack Overflow用户

发布于 2017-08-28 12:58:02

您应该在enableAjaxValidation中设置ActiveForm

例如:

代码语言:javascript
复制
$form = ActiveForm::begin([
    'id' => 'contact-form',
    'enableAjaxValidation' => true,
]);
票数 0
EN

Stack Overflow用户

发布于 2017-08-29 08:08:47

也许我把这个问题描述得不太好,所以我再试一次。问题是条件验证只在单击“保存/创建”之后才能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45918941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档