我正在尝试在CakePHP联系表单中进行一些非常简单的验证,但验证不起作用,尽管我认为我做了所有必要的事情。这是我做的:
我制作了这样的模型:
class Office extends AppModel
{
var $name = 'Office';
var $useTable = false;
public $validate = array('onderwerp' => 'notEmpty');
}
(我还从CakePHP在线手册中尝试了$validate
的许多其他值)
在Config / bootstrap.php中我制定了这条规则,不让CakePHP期待复数“办公室”:
Inflector::rules('plural', array('rules' => array(),
'irregular' => array(),
'uninflected' => array('office')));
在OfficeController中,我在方法contact()
中执行此操作:
$this->Office->set($this->request->data);
if($this->Office->validates()){
echo "code validates";
} else {
print_r($this->Office->validationErrors);
}
在我的Office/contact.ctp
视图中,我有(在其他代码中,如开始和结束表单)此代码:
$this->Form->input('onderwerp', array('label'=>false, 'size' => 60));
现在,即使我填写表单,将字段'onderwerp'留空,它也会执行代码执行时应执行的代码。
当我print_r($this->request->data)
或print_r($this->Office)
时,我看到我的onderwerp
字段在那里并且它是空的(或在我填写某些内容时填充)。
现在,当我在模型中添加public function validates()
并在那里添加echo
时,就会显示它。所以我说CakePHP知道在哪里找到我的模型,并且执行我的控制器代码。我还尝试在return parent::validates();
函数中添加validates()
,但这也没有产生验证错误或任何其他错误。我的调试级别设置为2
。
我想我在这个大海捞针中错过了一针。谢谢你帮我找到它!
答案 0 :(得分:1)
所以放下所有的变形器东西。
并在Form-> create()
中使用正确的模型或者
$this->Form->create(null)
或
$this->Form->create('Office');
如果您按照我的建议使用带有模式的少表模型,那么您还将拥有更多关于输入创建和验证的能力。