【问题标题】:Silverstripe Editors can not edit own DataObjectsSilverstripe Editors 不能编辑自己的 DataObjects
【发布时间】:2011-03-23 17:20:09
【问题描述】:

我的问题是编辑器无法编辑或创建我为我构建的页面创建的某些 DataObjects。有些是可编辑的,有些则不是。如果我切换语言,它是一个多语言网站,那么输入字段甚至不会出现。

示例: 我有一个链接类来显示链接列表

  • 德语 -> 编辑可以编辑和创建
  • 英语 -> 弹出窗口中没有字段

其他管理下载的类

  • 德语 -> 显示:是,编辑和创建:否
  • 英语 -> 弹出窗口中没有字段

谁能提示我问题出在哪里?

EDIT2:在 cmets 中附加代码的文件

编辑: 这是我的翻译功能:

public function getCMSFieldTranslated(FieldSet $fieldset, array $transFields) {
    // If a translation exists, exchange them with
    // original/translation field pairs
    $translation = $this->getTranslation(Translatable::default_locale());
    if($translation && $this->Locale != Translatable::default_locale()) {
        $transformation = new Translatable_Transformation($translation);

        foreach($transFields as $fieldName => $field) {
            $fieldset->replaceField($fieldName, $transformation->transformFormField($field));
        }
    }
}

【问题讨论】:

  • 您是否对数据对象应用了一些 canCreate() 或类似函数?你能提供一些代码摘录吗?
  • 我没有使用 canCreate。这是链接类示例dl.dropbox.com/u/134993/Link.php 如果编辑器需要编辑权限,您能帮我传递给 canCreate 的参数吗?
  • TableListField.php 函数 Can($mode) 在 $this->isReadOnly() 上返回 false,但是我在哪里正确设置它以及为什么它在德语中有效?

标签: php permissions content-management-system silverstripe data-objects


【解决方案1】:

您必须在弹出窗口中指定要翻译的字段。 查看有关此的翻译文档。 http://doc.silverstripe.org/sapphire/en/topics/translation#translating-custom-properties

在示例中,它使用 getCMSFields 函数,但对 getPopupFields() 使用相同的策略。

如果这对您没有帮助,请发布您的模型和控制器。

祝你有美好的一天。

【讨论】:

  • 我添加了一个函数 getCMSFieldsTranslated to Page.php。这是否意味着我必须为从 Page.php 派生的所有类添加此函数?自定义属性的翻译似乎有效。只是不是我自己的数据对象......
  • 我还查看并发现我不需要翻译现有数据对象。只需为英文页面的pageID新建一个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
相关资源
最近更新 更多