【问题标题】:symfony i18n objects without output escaping没有输出转义的 symfony i18n 对象
【发布时间】:2013-02-20 19:28:04
【问题描述】:

我在 Symfony 1.4 和 Doctrine 中遇到了一个问题,即在没有输出转义的情况下获取 i18n 对象的值。

通常我只是这样做$object->getDescription(ESC_RAW); 以获得未转义的值。当我想获得对象的特定翻译时,问题就出现了。如何指定文化和逃避策略?我还没有找到任何关于此的文档。我可以将多个参数作为数组或类似的东西传递:$object->getDescription(array('fr', ESC_RAW));

这是我的架构的相关部分:

Object:
  actAs:
    Timestampable: ~
    I18n:
      fields:           [name, description]
  columns:
    name:               { type: string(255), notnull: true }
    description:        { type: string(1000) }
    user_id:            { type: integer }
  relations:
    User:               { class: sfGuardUser, local: user_id, foreign: id, type: one, foreignType: many, foreignAlias: Objects }

【问题讨论】:

    标签: internationalization escaping symfony-1.4


    【解决方案1】:

    试试:

    sfOutputEscaper::unescape($object->Translation['fr']->description);
    

    【讨论】:

    • 嘿,谢谢,这是有效的。知道为什么以前的答案对我不起作用吗?这似乎不是处理此问题的正确方法。
    • getDescription(ESC_RAW) 如果你在对象上直接工作,比如$object->getDescription(ESC_RAW)。但是如果你点击 Translation 关系,我从不使用 getter 来检索值。顺便说一句,使用sfOutputEscaper::unescape 并不是一个坏方法,这取决于开发人员,因为使用ESC_RAW,他们最后会执行相同的操作。
    • 您介意看看我关于i18n 的相关问题吗?如果你没有时间也没关系;非常感谢您的帮助。
    【解决方案2】:
     $object->Translation['fr']->getDescription(ESC_RAW);
    

    这应该可以解决问题:)

    【讨论】:

    • 谢谢!但是,当我尝试这个时,我得到:“Doctrine_Record_UnknownPropertyException Unknown method ObjectTranslation::getDescription” 我编辑了我的问题以包含我的模式。也许我做错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多