如何修复未定义的偏移量并且找不到名称的验证处理程序

时间:2015-05-28 17:28:43

标签: php validation cakephp

我的验证码是这样的:

            function positionSettings() {
            document.getElementById("gameWindow").scrollLeft = mapLeft;
            document.getElementById("gameWindow").scrollTop = mapTop;
            document.getElementById("protagonist").style.left ="507px";
            document.getElementById("protagonist").style.top ="347px";
        }
        function moveMap(keystroke){
            switch(keystroke.keyCode){
                case 37:
                    mapLeft = mapLeft - 8;
                    positionSettings();
                    break
                case 38:
                    mapTop = mapTop - 8;
                    positionSettings();
                    break
                case 39:
                    mapLeft = mapLeft + 8;
                    positionSettings();
                    break
                case 40:
                    mapTop = mapTop + 8;
                    positionSettings();
                    break
            }

        }
            function loadMap(){
            for(updown=0;updown<50;updown++){
                for(leftright=0;leftright<50;leftright++){
                    //alert(tileProperties[leftright][updown]);
                    var tile = document.createElement("div");
                    tile.setAttribute("class","mapTile");
                    if(tileProperties[leftright][updown]){
                        tile.setAttribute("style","background-color:#00FF00;left:"+ leftright * 32 +"px; top:"+ updown * 32+"px;");
                    }
                    else{
                        tile.setAttribute("style","background-color:#FFFF00;left:"+ leftright * 32 +"px; top:"+ updown * 32+"px;");
                    }
                    var tileNum = document.createTextNode(leftright +":"+ updown);
                    tile.appendChild(tileNum);
                    document.getElementById("worldMap").appendChild(tile);
                                                    }
            }
        positionSettings();
        }
    </script>
</head>

<body onload="loadMap()" onkeydown="moveMap(event)">

    <div id="gameWindow">

        <div id="worldMap">
        </div>

    </div>
        <div id="protagonist">
        </div>

</body>

但每次我运行代码时,我都会收到这些错误:

  

注意(8):未定义的偏移量:0 [CORE \ Cake \ Model \ Validator \ CakeValidationRule.php,第342行]   警告(512):找不到名称的验证处理程序[CORE \ Cake \ Model \ Validator \ CakeValidationRule.php,第281行]

我没有得到什么问题。 任何帮助都感激不尽。 谢谢!!

1 个答案:

答案 0 :(得分:1)

问题在这里

'name' => array(
    'rule' => array(
        'rule'=> 'notEmpty',
        //...
    )
)

只需将第一个rule键更改为其他内容

即可
'name' => array(
    'validName' => array(
        'rule' => array('notEmpty'),
        //...
    )
)

出现这些错误的原因如下。找到rule密钥后,Cake会尝试从其值中解析验证处理程序的名称。在第二个示例中,它尝试从array('notEmpty')获取索引0 的值,并将其解析为notEmpty方法,一切都很好。
回到原来的name规则,Cake尝试从array('rule'=>'notEmpty',...)获取 index 0 的值,没有这样的索引(偏移量),找不到验证处理程序,错误被触发。