Yii2模型验证未按预期工作

Yii2模型验证未按预期工作,yii,yii2,yii2-advanced-app,Yii,Yii2,Yii2 Advanced App,我试图在Yii2框架中验证一个简单的表单。 模型的验证方法为- /** * {@inheritdoc} */ public function rules() { return array( array('name', 'required'), // ... other rules ); } 当我试图提出请求时,它说- array(1) { ["name"]=&g

我试图在Yii2框架中验证一个简单的表单。 模型的验证方法为-

    /**
     * {@inheritdoc}
     */

    public function rules()
    {
        return array(
            array('name', 'required'),
            // ... other rules
        );
    }
当我试图提出请求时,它说-

array(1) { ["name"]=> array(1) { [0]=> string(21) "Name cannot be blank." } }
但问题是我正在请求帖子中发送name字段。但在提供名称字段后,它会给出一个错误

如果我对请求执行var_dump,它会显示请求中的name字段

这是请求数据的var_转储和验证错误。-

array(1) { ["name"]=> string(6) "distro" } array(1) { ["name"]=> array(1) { [0]=> string(21) "Name cannot be blank." } }

提前谢谢。

如果我正确理解了您的问题,您的问题就在您的输入中。 在Yii2 ActiveRecord中,所有数据都在模型名数组中。例如:

您的模型名为Users,当您使用ActiveRecord时,您的数据必须按如下方式发送到处理它的规则:

{
    'Users' => {
        'username' => 'john_doe',
        'fullname' => 'John Doe',
    }
}
因此,将html表单输入名称更改为:model_name[field_name]

像这样:

<input type="text" name="Users[username]">

我使用ajax发送请求,内容类型是json{users:{username=>john_doe,fullname=>john doe}}但它仍然给出相同的错误。@TrueCode请更新您的问题并发送您的代码和型号名称。这不是完全正确的。表单输入使用大写的模型名称,而不是蛇形结构,因此它应该是Users[username]ModelName[field]。此外,没有必要保持这种结构。\yii\base\Model::load$data,$formName=null方法的第二个参数决定在何处查找数据。当$formName为空时,将使用模型名,并在$data[$formName]中查找数据。但是当使用空字符串时,属性直接从$data加载。能否在controller中添加操作代码,以便我们了解如何设置/验证数据?请尝试$model->name=Yii::$app->request->postername;在验证之前,您可以附加控制器代码>操作以获得更好的解决方案。在验证之前,您必须使用$model->loadYii::$app->request->post方法将请求的数据加载到模型中。此方法将帮助您将请求的数据映射到模型。