DataObject
の2 TreeDropdownFields
を作成中に非常に奇妙な問題に遭遇しました。何らかの理由で、SilverStripe管理者に2 TreeDropdownFields
の1つだけが正しく表示されます。他は全くTreeDropdownField
としてレンダリングされませんが、ラベルと同じように:SilverStripe - TreeDropdownFieldsを2つ追加すると、1つだけが動作します
ここではコードです:
:ここclass HomeBanner extends DataObject {
public static $db = array(
'SortOrder' => 'Int',
'Title' => 'Varchar'
);
public static $has_one = array(
'Image' => 'Image',
'SecondaryImage' => 'Image',
'FirstLink' => 'SiteTree',
'SecondLink' => 'SiteTree'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeFieldFromTab('Root.Main', 'PageID');
$fields->removeFieldFromTab('Root.Main', 'SortOrder');
$fields->addFieldToTab('Root.Main', new TreeDropdownField('FirstLinkID', 'First Link', 'SiteTree'));
$fields->addFieldToTab('Root.Main', new TreeDropdownField('SecondLinkID', 'Second Link', 'SiteTree'));
return $fields;
}
public static $summary_fields = array(
'ID' => 'ID',
'Title' => 'Title',
'Thumbnail' => 'Thumbnail'
);
public function getThumbnail() {
return $this->Image()->CMSThumbnail();
}
}
は、私がこれまで試してみましたものです
- 実行中
dev/build/?flush=true
?flush=all
および?flush=1
- ログアウトし、バック
dev/build
+は、別のブラウザ(私は一般的にChromeを使用しますが、 は、Firefoxにこのサイトの管理者にログインし、同じ問題を見て) - エラーで管理者にログイン
- をフラッシュした後にログインログには何も報告しない - 彼らは明らかだ
- 第三
TreeDropdownField
を追加するChromeの開発ツールのコンソールにエラー - はありませんが2最初が正しく をレンダリングできるようになりますが、3つ目はちょうど代わりにラベルが表示されますa
TreeDropdownField
この形式は機能しますが、選択されたものは保存しません。ページを終了するとすぐに選択内容が消去されます。また、削除しない限り、既に管理者に保存されているものはすべて削除されます。変更を加えることはできません。保存されたアイテムは削除されます。):
$ fields-> addFieldToTab( 'Root.Main'、新しいTreeDropdownField( 'SecondLink'、 'SiteTree'、 'ID ')));
これはどうして起こっているのでしょうか? TreeDropdownFields
を複数持つことはできません。
「HomeBanner」という名前は、HomePageなどを指し示すhas_oneも存在する必要があることを示唆していますか?この原因はSilverStripeがhas_oneリレーションシップの1つをバナーが属するページを指すように自動的に設定しようとしているためです。 – kinglozzer
クラップス...それは実際に私が行方不明だったものです。私はそれを前に気付かなかったとは信じられない!私は数ヶ月間シルバーストライプから出て何かを忘れていたからだと思う。ありがとう! –