TreeDropdownField Silverstripe 4 Метки навигации
Я работаю над проектом SilverStripe 4, где я использую поле TreeDropdown. В 3.6 он получил MenuTitle (Navigation Label) по умолчанию, но я заметил, что в SilverStripe отображаются заголовки страниц по умолчанию.
Поскольку мой клиент изменил заголовки страниц, TreeDropdownField показывает длинные заголовки страниц. Я хотел бы отображать ярлыки навигации вместо длинных заголовков, потому что структура этих длинных заголовков непонятна.
У меня есть следующий код:
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TreeDropdownField;
class InternalLink extends DataObject {
private static $db = [
'Title' => 'Varchar',
];
private static $has_one = [
'LinkTarget' => SiteTree::class,
'InternalLinkCategory' => 'InternalLinkCategory'
];
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', TextField::create( 'Title', 'Titel link' ) );
$fields->addFieldToTab('Root.Main', TreeDropdownField::create( 'LinkTargetID', 'Doeladres', SiteTree::class ) );
return $fields;
}
}
1 ответ
Решение
Ты можешь использовать TreeDropdownField::setTitleField()
, Устанавливает поле, используемое для заголовка элемента.
$treeField = TreeDropdownField::create('LinkTargetID', 'Doeladres', SiteTree::class);
$treeField->setTitleField('MenuTitle');
$fields->addFieldToTab('Root.Main', $treeField);