我在 BlogArticle 和 BlogCategory 之间有很多关系。我想将 CheckboxSetField 或 ListBoxField 添加到BlogArticle的cmsFields中,该博客包含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;
}
}
有什么想法吗?非常感谢!
答案 0 :(得分:1)
在BlogArticle.php上,您没有引用该关系,因此无法保存。
因此BlogCategory::get()
应该是$this->BlogCategories()
-您可能还必须map()
的值。
在此处有一个使用$many_many
复选框字段的示例:https://www.silverstripe.org/learn/lessons/v4/working-with-data-relationships-many-many-1