1

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

  1. 我做了一个这样的模型:

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

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

  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));

现在,即使我填写表格,将“onderwerp”字段留空,它也会执行在执行代码时应该执行的代码。

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

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

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

4

1 回答 1

1

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

并在您的 Form->create() 中使用正确的模型

任何一个

$this->Form->create(null)

或者

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

如果您按照我的建议使用带有模式的无表模型,您还将对输入创建和验证拥有更大的权力。

于 2012-10-12T20:59:23.710 回答