【问题标题】:CakePHP validation not working for contact formCakePHP 验证不适用于联系表单
【发布时间】:2012-10-12 15:06:22
【问题描述】:

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

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

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

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

  2. 在 Config/bootstrap.php 中,我为不让 CakePHP 期望复数“Offices”制定了这条规则:

    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 知道在哪里可以找到我的模型,并且会执行我的控制器代码。我还尝试在我的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


【解决方案1】:

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

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

要么

$this->Form->create(null)

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

如果您按照我的建议使用带有架构的无表模型,您还将拥有更多的输入创建和验证能力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多