小编SAD*_*ADi的帖子

如果新值等于prev值,则跳过yii2对更新操作的唯一验证

由于更新操作上的唯一验证器获取错误('此用户名已被占用')我想在新用户名值不等于prev值时验证更新操作上的用户名,这是我的规则:

        [['username'], 'unique', 'on'=>'update', 'when' => function($model){
                return static::getOldUsername($model->id) !== $model->username;
            }
        ],
Run Code Online (Sandbox Code Playgroud)

并且我的功能是获得上一个用户名值:

public static function getOldUsername($id)
{
    return static::findIdentity($id)->username;
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我认为$ model-> getId()没有返回任何因为静态id(例如:23)它的工作.

        [['username'], 'unique', 'on'=>'update', 'when' => function($model){
                return static::getOldUsername(23) !== $model->username;
            }
        ],
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得模特ID?或者,如果您有其他方法可以在更新操作上跳过yii2唯一验证,如果新值等于prev值,请解释一下.

提前致谢

yii2 yii2-validation

6
推荐指数
1
解决办法
3096
查看次数

在 yii2 中通过 ajax 验证表单

我有一个在弹出窗口中打开的表单,所以我想通过 ajax 验证来验证我的表单,但是当我点击提交按钮时,我的页面会刷新,所以我没有收到任何验证错误

查看文件:

 <?php $form = ActiveForm::begin([
        'id' => 'signup-form',
        'enableAjaxValidation' => true,
        //'action' => Url::toRoute('user/ajaxregistration'),
        'validationUrl' => Url::toRoute('user/ajaxregistration')

]); ?>

 <div class="col-md-12">
                    <div class="formbox">
                      <div class="inputbox signup">
                        <div class="input-group"> <span class="input-group-addon"><i class="glyphicon name"></i></span>
                          <?= Html::textInput('userFullName', '', ['placeholder' => "Name",'class'=>'form-control']); ?>
                        </div>

 <?php ActiveForm::end(); ?>
Run Code Online (Sandbox Code Playgroud)

控制器文件:

public function actionValidate() {

    $model = new SignupForm;

    if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ActiveForm::validate($model); \Yii::$app->end();

    }


}
Run Code Online (Sandbox Code Playgroud)

型号代码:

 return [

            ['userFullName', 'trim'],
            ['userFullName', 'required'],


        ];
Run Code Online (Sandbox Code Playgroud)

请建议我应该怎么做,以便我的页面不会被刷新,并且我会收到验证错误

php yii2 yii2-validation

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

yii2 ×2

yii2-validation ×2

php ×1