【发布时间】:2012-10-12 15:06:22
【问题描述】:
我正在尝试在我的 CakePHP 联系表单中进行一些非常简单的验证,但是即使我认为我已经做了所有必要的事情,验证也不起作用。这是我所做的:
-
我做了一个这样的模型:
class Office extends AppModel { var $name = 'Office'; var $useTable = false; public $validate = array('onderwerp' => 'notEmpty'); }(我还尝试了 CakePHP 在线手册中
$validate的许多其他值) -
在 Config/bootstrap.php 中,我为不让 CakePHP 期望复数“Offices”制定了这条规则:
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 知道在哪里可以找到我的模型,并且会执行我的控制器代码。我还尝试在我的validates() 函数中添加return parent::validates();,但这也没有产生任何验证错误或任何其他错误。我的调试级别设置为2。
我想我在这个大海捞针中少了一根针。感谢您帮我找到它!
【问题讨论】:
-
变形器规则是不必要的,$name 也是如此。关键问题:你的 Form->create() 是什么样子的?
-
也尝试使用模式等来更好地验证和表单输入处理:dereuromark.de/2010/06/23/working-with-forms
-
哦,天哪,那是针。非常感谢,马克!我的 Form->create 看起来像
$this->Form->create('Contact');。但当然必须是$this->Form->create('Office');,以我的控制器命名,而不是我的操作。回想起来,它似乎总是那么明显...... -
再说一遍,不完全是;)以模型命名(这是这里的范围)。
-
啊,是的,当然。再次感谢。只要我有 15 声望,就会给你点赞!
标签: validation cakephp cakephp-2.2