CakePHP验证不适用于联系表单

时间:2012-10-12 15:06:22

标签: validation cakephp cakephp-2.2

我正在尝试在CakePHP联系表单中进行一些非常简单的验证,但验证不起作用,尽管我认为我做了所有必要的事情。这是我做的:

  1. 我制作了这样的模型:

    class Office extends AppModel
    {
      var $name = 'Office';
      var $useTable = false;
      public $validate = array('onderwerp' => 'notEmpty');
    }
    

    (我还从CakePHP在线手册中尝试了$validate的许多其他值)

  2. 在Config / bootstrap.php中我制定了这条规则,不让CakePHP期待复数“办公室”:

    Inflector::rules('plural', array('rules' => array(), 
        'irregular' => array(), 
        'uninflected' => array('office')));
    
  3. 在OfficeController中,我在方法contact()中执行此操作:

    $this->Office->set($this->request->data);
    if($this->Office->validates()){
      echo "code validates";
    } else {
      print_r($this->Office->validationErrors);
    }
    
  4. 在我的Office/contact.ctp视图中,我有(在其他代码中,如开始和结束表单)此代码:

    $this->Form->input('onderwerp', array('label'=>false, 'size' => 60));

  5. 现在,即使我填写表单,将字段'onderwerp'留空,它也会执行代码执行时应执行的代码。

    当我print_r($this->request->data)print_r($this->Office)时,我看到我的onderwerp字段在那里并且它是空的(或在我填写某些内容时填充)。

    现在,当我在模型中添加public function validates()并在那里添加echo时,就会显示它。所以我说CakePHP知道在哪里找到我的模型,并且执行我的控制器代码。我还尝试在return parent::validates();函数中添加validates(),但这也没有产生验证错误或任何其他错误。我的调试级别设置为2

    我想我在这个大海捞针中错过了一针。谢谢你帮我找到它!

1 个答案:

答案 0 :(得分:1)

所以放下所有的变形器东西。

并在Form-> create()

中使用正确的模型

或者

$this->Form->create(null)

$this->Form->create('Office');

如果您按照我的建议使用带有模式的少表模型,那么您还将拥有更多关于输入创建和验证的能力。