Поле CMS для отношения many_many в SilverStripe 4 - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть отношение между BlogArticle и BlogCategory many_many & own_many_many.Я хотел бы добавить CheckboxSetField или ListBoxField в cmsFields на BlogArticle, которая содержит BlogCategories.

Следующий код показывает правильные флажки в cms, но по какой-то причине он не хранит значения:

class BlogCategory extends DataObject
{
    private static $db = [
        'Title' => 'Varchar(255)'
    ];

    private static $belongs_many_many = [
        'BlogArticles' => BlogArticle::class
    ];
}


class BlogArticle extends Page
{
    private static $many_many = [
        "BlogCategories" => BlogCategory::class,
    ];

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();

        $field = CheckboxSetField::create(
            'BlogCategories',
            'Categories',
            BlogCategory::get()
        );

        $fields->add($field);
        return $fields;
    }
}

Есть идеи, что не так?Большое спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

В вашем BlogArticle.php вы не ссылаетесь на отношение, поэтому оно не может быть сохранено.

Так что BlogCategory::get() должно быть $this->BlogCategories() - вам, вероятно, придется map() значения также.

Вот пример использования поля флажка с $many_many здесь: https://www.silverstripe.org/learn/lessons/v4/working-with-data-relationships-many-many-1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...