扩展sfGuardUser:添加“电话号码”字段

时间:2011-09-12 12:38:11

标签: php symfony1 doctrine symfony-1.4 doctrine-1.2

DOCTRINE 1.2 // SYMFONY 1.4

嗨! 在我的网站上,我正在使用sfGuardPlugin的表与其他表格来设置闹钟系统,应用程序会收到用户的邮件以获取邮件并发送电子邮件, 现在我还需要一个发送短信的电话号码! 我需要的只是phone'表格中的一个额外字段(“sfGuardUser”), 我一直想知道我是否可以用“inheritence”来做这件事,但我被困在那种类型中(简单,具体?...) 任何想法?

3 个答案:

答案 0 :(得分:2)

为什么不使用sf_guard_user_profile表添加自定义字段?这是推荐的方法。

sf_guard_user_profile:
  _attributes: { phpName: sfGuardUserProfile }
  id:          ~
  user_id:     { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
  phone:       varchar(20)

然后你可以使用:

$this->getUser()->getGuardUser()->getProfile()->getPhone()

$this->getUser()->getProfile()->getPhone()

无论如何,如果你想/需要“扩展”sfGuardUser,你必须修改插件schema.yml,添加你的字段并重建所有类。我建议你反对。 ; - )

答案 1 :(得分:0)

我不确定您是否只是在数据库/模型中创建字段时遇到问题。如果是这种情况:

例如 - 如果要在schema.yml文件中定义表,基本上可以这样做:

sfGuardUser:
  columns:
    somecolumn:
      type: string

只需指定sfGuardUser,因为它是一个新的,不存在的类并添加您的字段。另一种(在某些情况下更好)方式是为配置文件字段创建一个新表并使用sfGuardUser id作为外键。

如果问题出在其他方面,请告诉我。

答案 2 :(得分:0)

我通过使用继承解决了这个问题:输入simple和addind my field!不管怎么说,还是要谢谢你 !

Myuser:
  inheritance:
    extends: sfGuardUser
    type: simple
  columns:
    gsm:
      type: string(30)

这样字段“gsm”将出现在sfGuardUser表中并由插件自动管理(我不必使用MyUser)

我现在可以通过使用:来自sfGuardUser对象的getGsm()....来获取电话号码! 谢谢大家!