Validation Cakephp表单验证空索引

Validation Cakephp表单验证空索引,validation,cakephp,Validation,Cakephp,好的,简而言之,我正在尝试验证一个表单,就像我以前做过一百万次一样,没有任何问题。但是,我发现在记录验证错误时,所有无效字段在validationErrors数组中都有一个索引,但是消息是空的 是的,我肯定在模型中设置了验证消息,所以我不确定为什么它是空的 以下是我的模型验证: public $validate = array( 'effective_policy_date' => array( 'date' => array( 'ru

好的,简而言之,我正在尝试验证一个表单,就像我以前做过一百万次一样,没有任何问题。但是,我发现在记录验证错误时,所有无效字段在validationErrors数组中都有一个索引,但是消息是空的

是的,我肯定在模型中设置了验证消息,所以我不确定为什么它是空的

以下是我的模型验证:

public $validate = array(
    'effective_policy_date' => array(
        'date' => array(
            'rule' => array('date'),
            'message' => 'Invalid date format',
        ),
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'Policy date required',
        ),
    ),
    'business_address' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'Business address required',
        ),
    ),
    'city' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'City required',
        ),
    ),
    'zip_code' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'Zip code required',
        ),
    ),
    'state_id' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'State required',
        ),
    ),
    'contact_person' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'Contact person required',
        ),
    ),
    'phone' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'Phone number required',
        ),
    ),
    'email' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'Email address required',
        ),
        'email' => array(
            'rule' => array('email'),
            'message' => 'Invalid email format',
        ),
    ),
);
以下是提交带有空字段的表单后validationErrors数组的输出:

[AccountsRequest] => Array
    (
        [effective_policy_date] => Array
            (
            )

        [policy_number_one] => Array
            (
            )

        [policy_number_two] => Array
            (
            )

        [policy_number_three] => Array
            (
            )

        [policy_number_four] => Array
            (
            )

        [business_address] => Array
            (
            )

        [city] => Array
            (
            )

        [zip_code] => Array
            (
            )

        [state_id] => Array
            (
            )

    )
为了完整起见,下面是我的表单->在视图中使用的创建数组以及负责处理表单提交的控制器操作:

表单创建()方法

<?php 
    echo $this->Form->create(
        'Request', 
        array(
            'novalidate' => 'novalidate', 
            'action' => 'new_request', 
            'inputDefaults' => array(
                'label' => false, 
                'div' => false,
                'error' => array(
                    'attributes' => array(
                        'wrap' => 'label', 'class' => 'error'
                    )
                )
            )
        )
    );
?>
您将在验证数组中看到一些不在validationErrors中的索引,这只是因为我还没有完全完成将原始HTML转换为CakePHP表单


问题:validationErrors数组不应为空。它应该包含notEmpty规则的消息,因此表单前端有空的错误验证元素。你知道我做错了什么吗?

Aarg,真烦人。我已经弄明白了,这是一个很好的教训

对于将来有类似问题的人,请确保输入字段符合当前表单模型的关系

例如,在本例中,我表单的模型是
'Request'
。请求有许多
'AccountsRequest'
。因此,我的表单输入类似于:

AccountsRequest.effective_policy_date
它应该在哪里

AccountsRequest.0.effective_policy_date
通过此更改,我的模型验证消息现在可以毫无问题地显示

然而,我仍然很想知道为什么CakePHP甚至将这些字段视为无效字段,而且如果它足够聪明,能够将这些字段视为无效字段,为什么它不给我验证消息

哦,好吧

AccountsRequest.0.effective_policy_date