首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataObject + TranslatableDataObject + ModelAdmin

DataObject + TranslatableDataObject + ModelAdmin
EN

Stack Overflow用户
提问于 2015-08-16 18:02:56
回答 1查看 181关注 0票数 2

设置: SS 3.1.13,Translatable 2.0.8和TranslatableDataObject dev-master。

我有两个DataObject类:"Facility“($has_one)和"FacilityType”($has_many),我选择在ModelAdmin中管理它们(因为它们是站点所有者的全局属性)。然而,尽管仔细阅读了设置说明here,我还是无法让TranslatableDataObject扩展真正为它们启用翻译。

这是我的_config.php:

代码语言:javascript
复制
// Set the site locale
i18n::set_locale('en_US');

SiteConfig::add_extension('Translatable');

// Set allowed locales
Translatable::set_allowed_locales(array('en_US', 'pl_PL'));
TranslatableDataObject::set_locales(array('en_US', 'pl_PL'));
Facility::add_extension("Translatable");
Facility::add_extension("TranslatableDataObject"); // tried "TranslatableDataObject('Title')" as well
FacilityCategory::add_extension("Translatable");
FacilityCategory::add_extension("TranslatableDataObject");

有没有人能确认一下这个设置是否适合我?

FacilityCategory.php

代码语言:javascript
复制
class FacilityCategory extends DataObject {
    private static $db = array(
      'Title' => 'Varchar'
    );

    private static $has_many = array(
      'Facilities' => 'Facility.FacilityCategory'
    );

    public function getCMSFields(){
        $fields = FieldList::create(
            TextField::create('Title')
        );
        return $fields;
    }
}

class FacilityCategoryAdmin extends ModelAdmin {
    private static $menu_title = 'Facility Categories';
    private static $url_segment = 'facility-categories';
    private static $managed_models = array(
        'FacilityCategory'
    );
}

Facility.php

代码语言:javascript
复制
class Facility extends DataObject {
    private static $db = array(
        'Title' => 'Varchar',
    );

    private static $has_one = array(
        'Category' => 'FacilityCategory'
    );

    private static $summary_fields = array(
        'Title' => 'Name',
        'Category.Title' => 'Type'
    );

    public function getCMSFields(){
        $fields = FieldList::create(
            TextField::create('Title'),
            DropdownField::create('CategoryID', 'Category')
                ->setSource(FacilityCategory::get()->map()->toArray())
                ->setEmptyString('-- select a category --')
        );
        return $fields;
    }
}

class FacilityAdmin extends ModelAdmin {
    private static $menu_title = 'Facilities';
    private static $url_segment = 'facilities';
    private static $managed_models = array(
        'Facility'
    );
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-19 20:54:52

我已经帮你调查过了。

我已经安装了一个新的SS站点,使用:

代码语言:javascript
复制
composer create-project silverstripe/installer

然后我添加了translatable:

代码语言:javascript
复制
composer require silverstripe/translatable ~2.0.8

我的_config.php看起来像这样:

代码语言:javascript
复制
<?php

global $project;
$project = 'mysite';

global $database;
$database = '';

require_once('conf/ConfigureFromEnv.php');

// Set the site locale
i18n::set_locale('en_GB');
Translatable::set_default_locale('en_GB');
MyObj::add_extension('Translatable');

我已经创建了一个ModelAdmin。

我在浏览器中导航到/dev/build?flush=all

然后我导航到内容管理系统中的ModelAdmin,我看到了以下内容:

我认为部分问题是你同时使用了两个可翻译的模块,你只需要一个。

除此之外,我不知道为什么你看不到可翻译标签。你有收到任何PHP错误吗?刷新或完成了/dev/build吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32033873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档