2

セットアップ: SS 3.1.13、Translatable 2.0.8、および TranslatableDataObject dev-master。

「Facility」($has_one) と「FacilityType」($has_many) の 2 つの DataObject クラスがあり、ModelAdmin で管理することを選択しました (これらはサイト所有者のグローバル プロパティであるため)。ただし、TranslatableDataObject 拡張機能を取得して実際に翻訳を有効にすることはできませんが、こちらのセットアップ手順を注意深く読んでください。

ここに私の_config.phpがあります:

// 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

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'
    );
}

ファシリティ.php

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'
    );
}
4

1 に答える 1

2

私はあなたのためにこれを調べました。

以下を使用して新しい SS サイトをインストールしました。

composer create-project silverstripe/installer

次に、翻訳可能なものを追加しました:

composer require silverstripe/translatable ~2.0.8

私の _config.php は次のようになります。

<?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 に移動します

次に、CMS で ModelAdmin に移動すると、次のように表示されます。

翻訳可能なタブの表示

翻訳可能なタブの内容

問題の一部は、一度に 2 つの翻訳可能なモジュールを使用していて、必要なのは 1 つだけだと思います。

それ以外では、翻訳可能なタブが表示されない理由がわかりません。PHP エラーが発生していますか?フラッシュまたは /dev/build を実行しましたか?

于 2015-08-19T12:54:52.440 に答える