具有验证器的虚拟属性,拆分/连接列值以创建它们

时间:2012-07-30 02:13:56

标签: php lithium

我有一个现有的SQL表,我无法修改其架构,我想为它创建一个Lithium数据模型。问题是一列包含多个由特殊字符分隔的“字段”。

E.g。

data = "username|email|age"

我需要:

  • 在读取行之后拆分列的值,然后创建 “虚拟”属性
  • 能够分配这些虚拟属性
  • 加入虚拟属性以在保存
  • 之前创建有效的列值
  • 为虚拟属性创建验证器
  • 使用html->表单为虚拟属性创建表单字段

我试图弄清楚如何做到这一点,但似乎没有简单的方法。甚至不是很难:)任何想法?

1 个答案:

答案 0 :(得分:1)

开箱即用的锂电池不支持Magic虚拟属性。这里有一个正在进行的工作和讨论https://github.com/UnionOfRAD/lithium/pull/569

也就是说,在保存和查找模型+过滤器中的实例方法几乎可以解决这个问题。

  • 后找到过滤器,设置usernameemailage, 阅读后,您的实体属性。
  • 保存过滤器之前,在保存实体之前将这些属性加入data属性,并取消设置usernameemailage(以避免保存它们)

也许你需要模型实例方法,就像

一样
public function username($entity) {
      /* split here $entity->data by "|" and keep only what do you want */
      return $username;
}

然后你可以在任何地方拨打$ user-> username()来获取用户名。

这应解决您的问题,直到此功能将在Lithium中发货。