cakePHP验证中的随机消息

时间:2012-02-03 16:51:34

标签: cakephp

我是一个蛋糕新手 - 如果这听起来像天真的话那么借口...

基本上,我要做的是在验证中生成随机消息。目前我的代码是

                class Post extends AppModel {
                    var $name = 'Post';

                    var $validate = array(
                        'title' => array(
                            'rule' => 'notEmpty',
                            'message' => randomResponse()
                        ),
                        'body' => array(
                            'rule' => 'notEmpty'
                        )
                    );

                    function randomResponse() {

                        switch($this->myRandomMessageNumber)
                        {
                            case 1:
                                    echo 'Are we playing charades? If so, you know I can\'t see you';
                                    break;
                            case 2: 
                                    echo 'In english?';
                                    break;
                            case 3:
                                    echo '(signs back)';
                                    break;
                            case 4:
                                    echo 'Am I conversing with a mute?';
                                    break;
                        }
                        return true;
                    }
                }

显然,这会引发错误,说有意外情况这是使用他们在文档中提供的博客教程。那么我怎样才能生成这个随机消息呢?

1 个答案:

答案 0 :(得分:0)

您无法在PHP中的类属性声明中执行函数。

从长远来看,我会说看一下设置消息的自定义验证规则,但是通过在__construct()中分配消息,您也可以更轻松地实现同样的效果:

public function __construct() {
    $this->validate['title']['message'] = $this->randomResponse();

    parent::__construct();
}

*请注意,这样做的副作用是每次使用模型时都会运行此逻辑,即使没有进行验证,如果您想要有效率,也可以写一个custom validation rule,但逻辑这里很简单,可能不值得。