CakePHP - 使用其他模型中的值验证字段

时间:2015-04-19 22:00:15

标签: validation cakephp model field

我想知道是否可以使用类似inList()的方法验证字段,但使用其他模型中其他字段的值:

例如,我想使用来自type_id模型的Member字段中的值来验证id模型的MemberType字段。

Member 型号

<?php

class Member extends AppModel
{

    public $belongsTo = array(
        "MemberType" => array(
            "className" => "MemberType"
        )
    );

    public $validate = array(
        "type_id" => array(
            "validType" => array(
                'rule' => array('inList', array('A', 'B')),
                'message' => 'Choose an existing type'
            )
        )
    );

}


MemberType 模型

<?php

class MemberType extends AppModel
{

}

1 个答案:

答案 0 :(得分:1)

尝试使用自定义验证方法验证type_id字段:

<?php

class Member extends AppModel
{

    public $belongsTo = array(
        "MemberType" => array(
            "className" => "MemberType"
        )
    );

    public $validate = array(
        "type_id" => array(
            "validType" => array(
                'rule' => array('validMemberType'),
                'message' => 'Choose an existing type'
            )
        )
    );

    public function validMemberType($check){
        $types = array_keys($this->MemberType->find("list"));
        return in_array($check["type_id"], $types);
    }
}