0

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

例子: 我有一个类的链接,显示链表

  • 德文 - >编辑可以编辑和创建
  • Englisch - >在弹出的任何字段

其他类管理下载

  • 德语 - >显示:是,编辑&创建:没有
  • Englisch - >在弹出的任何字段

可能有人暗示我去哪里的问题可能是?附加文件的代码中的注释

编辑:

EDIT2 这里是我的翻译功能:

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)); 
     } 
    } 
} 
+0

你应用了一些canCreate()或类似的函数到你的数据对象?你能提供一些代码摘录吗? – schellmax 2011-03-24 09:15:05

+0

我没有使用canCreate。这里的链接类作为例子http://dl.dropbox.com/u/134993/Link.php你能帮助我极好的参数,如果编辑需要编辑权限,我将不得不传递给canCreate? – spankmaster79 2011-03-25 08:34:42

+0

TableListField.php函数Can $($ mode)在$ this-> isReadOnly()上返回false,但是我在哪里正确设置了它,为什么它在德语中起作用? – spankmaster79 2011-03-25 15:48:15

回答

0

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

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

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

祝您有美好的一天。

+0

我已经添加了一个函数getCMSFieldsTranslated到Page.php。这是否意味着我必须为来自Page.php的所有可能的类添加此函数?自定义属性的翻译似乎正常。只是不是我自己的数据对象... – spankmaster79 2011-03-25 09:17:41

+0

我也审查过,看到我不需要现有数据对象的翻译。只需为英文页面的pageID创建一个新页面 – spankmaster79 2011-03-31 08:24:22