【问题标题】:Adding an avatar field to the sfGuardUser model of sfDoctrineGuard plugin在 sfDoctrineGuard 插件的 sfGuardUser 模型中添加头像字段
【发布时间】:2011-09-28 04:15:42
【问题描述】:

我正在使用sfDoctrineGuardPlugin 在我的 Symfony 应用程序中管理用户、组和身份验证。

现在我想为sfGuardUser 模型添加一个头像。我怎样才能做到这一点?最好的方法是什么?我在网上看过好几种方法,但我不想把我的代码弄乱。

谢谢!

【问题讨论】:

    标签: symfony1 custom-attributes extend sfdoctrineguard


    【解决方案1】:

    有两种方法。

    • 扩展 sfGuardUser 模型
    • 按 1:1 创建配置文件模型

    如果您计划在用户模型中包含大量信息,则最推荐使用第二个。但如果你只需要添加头像字段,扩展 sfGuardUser 会更方便。

    为此,请将新的 sfGuardUser.schema.yml 放入您的 /config/ 文件夹中。它将被用来代替插件的。

    要创建“个人资料”,无需特别了解:

    Profile:
      tableName:                   profile
      columns:
        sf_guard_user_id:          integer
        firstname:                 varchar(100)
        phone:                     varchar(15)
      relations:
        sfGuardUser:               { class: sfGuardUser, onDelete: CASCADE, local: sf_guard_user_id, foreign: id, foreignType: one }
    

    【讨论】:

    • 扩展模型是首选选项,除非您要添加大量在检索主要对象时很少需要的数据。否则,将始终需要的数据拆分到两个表中是没有意义的。
    【解决方案2】:

    我的首选方法不需要更改数据库:

    • sfWidgetFormInputFileEditablesfValidatorFile 添加到sfGuardUserForm。根据需要配置小部件和验证器(删除允许、图像类型、大小等)
    • sfGuardUser 添加一个方法,该方法根据用户的不可变属性(例如,散列用户ID)生成唯一路径。
    • 使用此方法既可以渲染图像,又可以为表单中的小部件和验证器设置上传路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 2011-09-17
      • 2020-04-20
      • 1970-01-01
      • 2014-09-15
      相关资源
      最近更新 更多