【问题标题】:How do I use beforeValidate() in CakePHP?如何在 CakePHP 中使用 beforeValidate()?
【发布时间】:2011-06-14 17:06:42
【问题描述】:

我有一个带有 URL 字段的表单。此字段的默认值为:http://。但该字段不是必需的。用户可以跳过它并提交表单。它不应该返回错误,因为它不是必需的并且因为他们没有输入 URL。但现在确实如此,因为 http://.

听说可以使用 beforeValidate() 来检查是否是 http://,然后清除 URL 字段,这样我就可以跳过错误消息。

但我不知道如何使用 beforeValidate()。我搜索了谷歌,但我没有找到任何工作示例。我在哪里放置 beforeValidate() 的代码?它是一个函数吗?如何从那里访问提交的表单数据?

谢谢。

【问题讨论】:

  • 错误到底是什么意思?
  • 它返回验证错误消息,“URL 无效”。我需要在验证之前清除 http://,在提交表单之后,所以 cakephp 将该字段作为空白跳过。
  • 查看您之前的问题:stackoverflow.com/questions/4783872/…

标签: php cakephp cakephp-1.3 cakephp-model


【解决方案1】:

是的,beforeValidate() 是模型的函数。所以每个模型都有它。你应该如何使用它:

class YourModel extends AppModel {
   function beforeValidate(){
      if($this->data['YourModel']['url_field'] == 'http://'){
         unset($this->data['YourModel']['url_field']);
      }
      return true; //this is required, otherwise validation will always fail
   }
}

【讨论】:

  • 宁可将 var 设置为空白而不是取消设置 .. 验证规则中可能需要它。
【解决方案2】:

不要将 http:// 硬编码到表单中,而是为 url 添加适当的验证并使用以下内容来允许空白

'allowEmpty' => 真

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多