【发布时间】:2013-01-27 14:55:29
【问题描述】:
我在两个字段中使用TranslateBehavior:
- 姓名
- 蛞蝓
我从模型中删除这些字段,因为字段的内容将保存在 i18n table 中。它工作得很好,但有时在我的应用程序中我使用$this->Model->hasField('name'),当我从模型表中删除字段之后,这个函数总是返回 false。有什么解决办法吗?
【问题讨论】:
标签: cakephp internationalization
我在两个字段中使用TranslateBehavior:
我从模型中删除这些字段,因为字段的内容将保存在 i18n table 中。它工作得很好,但有时在我的应用程序中我使用$this->Model->hasField('name'),当我从模型表中删除字段之后,这个函数总是返回 false。有什么解决办法吗?
【问题讨论】:
标签: cakephp internationalization
翻译行为使用virtual fields,因此,如果您查询hasField 以获得不 存在的字段 - 它会正确返回false,因为该字段实际上并不存在。
翻译行为在查询前按需创建虚拟字段定义,并在查询后销毁它们。因此,您不能只使用the second parameter of hasField,除非您设法在转换行为的beforeFind 和afterFind 方法之间调用它,否则结果将始终为false:
$willAlwaysBeFalse = $this->hasField('name', true);
您可以选择以下几件事:
hasField 的第二个参数确实允许您获得肯定的响应hasField 总是返回 true最简单的解决方案是不删除该字段。这也将确保,虽然数据可能是空白的,但如果翻译行为被禁用或存在某种错误,您的模型仍然可以工作。
【讨论】: