我正在为一个项目寻找一个使用Siverstripe的博客模块。这个博客有我想要的大部分功能,但是由于这个网站主要是以书为中心的,所以我想在blogpost表中添加一些字段来保存书籍数据(标题、作者、评分等)。这看起来应该比较简单,但我似乎无法让它发挥作用。我创建了以下扩展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创建新的表,而不是将字段添加到BlogPost表中。我做错了什么?
发布于 2018-02-19 07:49:50
您对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以添加您的扩展,就像以前一样:
SilverStripe\Blog\BlogPost:
extensions:
- MyProject\Extensions\BookDataExtension发布于 2018-09-04 16:10:15
试试这个:
<?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/扩展名/
在您的配置中:
SilverStripe\Blog\Model\BlogPost:
extensions:
- BookDataExtensionhttps://stackoverflow.com/questions/48858116
复制相似问题