【问题标题】:Yii2 Simple Ad Hoc ValidationYii2 简单的即席验证
【发布时间】:2018-04-27 00:42:00
【问题描述】:

我创建了一个简单的验证,例如:

public function actionMerchant() {

    $post = Yii::$app->request->post();

    $model = DynamicModel::validateData($post, [
        [['mid'], 'required'],
        [['mid'], 'integer'],
        ['email', 'email'],
    ]);

    if ($model->hasErrors()) {
        return [
            "message" => "Validation fail. Please check your input!"
        ];
    }

    return $model;
}

从上面的代码中,我希望如果我同时发送 mid 和 email 参数的 post 参数,这两个参数都可以通过 DynamicModel 类进行验证。

我遇到的问题,如果我发送电子邮件参数没有中间参数怎么办?

我会收到Getting unknown property: yii\\base\\DynamicModel::mid 错误消息。

需要验证不起作用吗?

谢谢

【问题讨论】:

    标签: php validation yii2


    【解决方案1】:

    要求验证工作正常。问题出在您的DynamicModel 中,因为 Yii2 正在从您传递的第一个参数创建它的对象属性(对于您的示例,这就是您的 $_POST 属性)。要使其正常工作,首先定义模型属性,然后将值加载到其中,然后进行验证。

    更多内容请关注DynamicModel Yii2

    === 编辑 ===

    $model = new DynamicModel(['mid' => null, 'email' => null]);
    $model->addRule('email', 'email');
    //here add more rules
    $model->load($post);
    $model->validate();
    

    【讨论】:

    • 你的意思是像compact('mid', 'email') ?基于我上面的代码
    • 有了你的代码,我总是得到验证错误。我的代码:pastebin.com/fXP6dh28 FYI:我不是从 Yii 表单发送请求,而是邮递员:ibb.co/bJgV7b
    • 使用$model->load($post, '');,应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多