我正在寻找一个使用Siverstripe博客模块的项目。该博客具有我想要的大多数功能,但由于该网站主要是以图书为中心,我想在博客文章表中添加一些字段来保存图书数据(标题,作者,评级等)。看起来这应该相对简单但是我似乎无法让它工作。我已经创建了以下扩展PHP文件:
namespace SilverStripe\Blog\Model;
use SilverStripe\Blog\Model\BlogPost;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TextareaField;
class BookDataExtension extends BlogPost
{
private static $db = [
'bookTitle' => 'Varchar',
'bookAuthor' => 'Varchar',
'bookSeries' => 'Varchar',
'bookISBN' => 'Varchar',
'bookSeriesNum' => 'Int',
'bookRating' => 'Decimal',
'bookCover' => 'Varchar'
];
}
并将以下内容添加到mysite.yml文件中:
SilverStripe\Blog\BlogPost:
extensions:
- SilverStripe\Blog\BookDataExtension
我还尝试将上面的内容添加到config.yml文件中以供博客模块本身使用。但是,无论我尝试什么,当我重建系统时,它会为BookDataExtension创建 new 表,而不是将字段添加到BlogPost表中。我做错了什么?
答案 0 :(得分:1)
你已经将T
子类化,而不是插入一个扩展名,也就是说。扩展它...
您的BlogPost
必须继承BlogPostExtension
;它可以在你自己的命名空间中:
DataExtension
然后,您可以像以前一样配置namespace MyProject\Extensions;
use SilverStripe\ORM\DataExtension;
class BookDataExtension extends DataExtension
{
private static $db = [
'bookTitle' => 'Varchar',
'bookAuthor' => 'Varchar',
'bookSeries' => 'Varchar',
'bookISBN' => 'Varchar',
'bookSeriesNum' => 'Int',
'bookRating' => 'Decimal',
'bookCover' => 'Varchar'
];
}
添加扩展程序:
BlogPost
答案 1 :(得分:0)
尝试一下:
<?php
namespace {
use SilverStripe\ORM\DataExtension;
use SilverStripe\Forms\FieldList;
class BookDataExtension extends DataExtension {
private static $db = [
'db_field_example' => 'Varchar'
];
public function updateCMSFields(FieldList $fields) {
// Add fields here
}
}
}
将扩展程序添加到app / src / extensions /
并在您的配置中:
SilverStripe\Blog\Model\BlogPost:
extensions:
- BookDataExtension