0

私は現在、クラスのアイテムとサブクラスのアイテムを一緒に GridField で管理しようとしています (「フルーツ」のサブクラスである「アップル」と「バナナ」のアイテムを含む GridField を考えてください)。

詳細フォームで ClassName ドロップダウンを使用してアイテムのクラスを切り替える方法を既に見つけました (SiteTree アイテムの [設定] タブに含まれる [ページ タイプ] ドロップダウンで行われるように)、正常に動作しています。

私が今やりたいことは、作成時にサブクラスを選択し、GridField の [追加] ボタンの横にすべてのクラスを含むドロップダウンを表示することです。残念ながら、「追加」ボタンは LeftAndMain の「EditForm」アクションを呼び出しているようで、ここからどこへ行くべきかわかりません。

GridFieldsのクラスなどの一部を拡張してこれを行うことができるかどうかを知っている人はいますか?

4

2 に答える 2

2

この機能は非常に便利なので、グリッド フィールド拡張モジュール(問題のコミット) に実装しました。

グリッド フィールド拡張モジュール

起動して実行するには、次のコードのようなことを行います。ドロップダウンに親クラスとサブクラスが自動的に入力され、ユーザーは作成するタイプを選択できます。

$config = $grid->getConfig();
$config->removeComponentsByType('GridFieldAddNewButton');
$config->addComponent(new GridFieldAddNewMultiClass());
于 2013-02-02T03:19:31.387 に答える
0

私はSS 3.1で似たようなことをしました.2ステップのプロセスですが、1ステップに変更することができます.

スーパークラスで、getCMSFields() に「ClassName」のドロップダウンを追加します。例:

public function getCMSFields() {
    $fields = parent::getCMSFields();
    $fields->addFieldToTab("Root.Main", 
        new DropdownField("ClassName", "Type", 
            array(
                "Apple" => "Apple", 
                "Banana" => "Banana",

            )
        )
    );

    return $fields;
}

次に、そのページで [保存] をクリックすると、選択したサブクラスの get CMS フィールドが表示されます。

于 2014-02-20T03:52:02.597 に答える