【问题标题】:Cakephp 2.x validation fieldlistCakephp 2.x 验证字段列表
【发布时间】:2014-01-27 20:40:28
【问题描述】:

我正在使用 cakephp 编写应用程序,但方法 'MyModel'->validates(array('fieldList) => array('myfield')) 不起作用。我的模型中的相关验证规则被忽略。

我的Controller功能如下:

function _processaddbasic(){
$this->Caught->set($this->data);
if ($this->Caught-validates(array('fieldList' => array('type_id')))){
   return true;
}
return false;
}

我的Modelpart如下:

public $validate = array(
'type_id'=> array(
            'rule' => 'notEmpty',
            'required' =>true,
            'allowEmpty' => false,
)
)

使用无效(空)数据执行代码后,我的控制器中的相关部分始终返回 true。那么,我哪里错了?

【问题讨论】:

  • 我发现,HTML 代码中 type_id 字段的“必需”标签丢失了。如何确保标签“requried”可用?

标签: php cakephp


【解决方案1】:

一些建议:

建议 1

您的代码中似乎有错字。

if ($this->Caught-validates(array('fieldList' => array('type_id')))){

应该是

if ($this->Caught->validates(array('fieldList' => array('type_id')))){

(它缺少一个“>”)

建议 2

如果你使用 CakePhp 2.x 可能会更好

$this->Caught->set($this->request->data);

而不是

$this->Caught->set($this->data);

建议 3

您的模型可能“脏”了程序中其他调用的数据。要在向其添加数据之前重置它,您必须调用createsee docs;

$this->Caught->create();

建议 4

检查您的模型类名称和文件名,确保它们是单数且匹配且没有拼写错误。

【讨论】:

  • 我采纳了你的建议,但没有任何效果。
  • debug( $this->request->data );的输出
  • 我做到了。数组为空,模型验证规则仍然被忽略。如上所述,我猜这个问题与 HTML 代码中缺少 'requried' 标记有关
  • 好的,请查看更新答案中的建议 4。确保你的模型在一个名为 Caught.php 的文件中被称为 Caught 并且它扩展了 AppModel
  • 相关form.ctp文件中的错字,Modelname拼写错误。感谢您的支持和耐心等待。
【解决方案2】:

使用$errors = $this->ModelName->invalidFields();检查错误

参考:http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2013-05-11
    相关资源
    最近更新 更多