Silverstripe CMS BlogPost - DropdownField ou SingleSelectField renseigné à partir du champ enum
P粉573943755
P粉573943755 2023-09-16 16:02:00
0
1
819

J'essaie d'ajouter une option de couleur d'en-tête à la vue récapitulative de BlogPost. J'ai ajouté un champ d'énumération à la base de données et je souhaite ajouter un champ déroulant/sélection sous l'en-tête BlogPost. Je ne sais pas quel type de champ utiliser et comment le configurer correctement.

class BlogPostExtension extends DataExtension
{
    private static $db = [
        'ArchiveDate' => 'Date',
        'TitleColor' => "Enum(array('black','red','green'))" // works only with this syntax
    ];

    private static $defaults = [
        'TitleColor' => 'black'
    ];


    public function updateCMSFields(FieldList $fields)
    {
        $fields->push(new DateField('ArchiveDate', 'Archive date'));
        $fields->push(new DropdownField('TitleColor','Color')); // doesn't populate the dropdown field
      //  $fields->push(new SelectField('TitleColor','Color'));   // cannot instantiate abstract class 'SelectField'
    }
}

P粉573943755
P粉573943755

répondre à tous(1)
P粉113938880

Si quelqu'un est intéressé, voici comment je l'ai résolu :

public function updateCMSFields(FieldList $fields)
{
    $fields->push(new DateField('ArchiveDate', 'Archive date'));
    $fields->push(new DropdownField('TitleColor','Color', $this->getEnums()));
}

private function getEnums() {
    return singleton('SilverStripe\Blog\Model\BlogPost')->dbObject('TitleColor')->enumValues();
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal