Php Silverstripe动态页面类型
我对新项目感到困惑。我在一所课程学校工作 课程页面: 课程页面通过administrationPhp Silverstripe动态页面类型,php,silverstripe,Php,Silverstripe,我对新项目感到困惑。我在一所课程学校工作 课程页面: 课程页面通过administrationadmin/pages/添加,并具有自己的页面类型和数据对象课程,课程页,课程分类CoursePage有页面模型和控制器,我几乎没有列出课程和类别的方法。我还有模板CoursePage.ss和CoursePage\u details.ss。 所有课程都有一个课程类别 在CoursePage\u控制器内部我有两种主要方法: public function details(SS_HTTPRequest $
admin/pages/
添加,并具有自己的页面类型和数据对象<代码>课程,课程页
,课程分类
CoursePage
有页面模型和控制器,我几乎没有列出课程和类别的方法。我还有模板CoursePage.ss
和CoursePage\u details.ss
。
所有课程都有一个
课程类别
在CoursePage\u控制器内部
我有两种主要方法:
public function details(SS_HTTPRequest $request)
public function ListAllCourses() {
return Course::get();
}
添加新课程:
通过管理模型
添加新课程。我有CourseAdmin
,它扩展了ModelAdmin
,而且一切都很好
显示课程:
这是通过Course\u Controller
和Course\u Page.ss
和Course\u Page\u details.ss
一切都很好,但现在问题来了:
问题:
我的客户希望在课程
页面中创建子页面,并在特定页面上分配所选课程
因此,他想创建新的childWeb开发课程
page,并且只想在该页面上循环Web开发课程
这里我有问题,因为我通过管理模式添加课程。接下来,所有的子页面都必须有自己的页面类型,比如WebDevelopmentPage
,在这里我将按类别查询和过滤这些课程
所以,如果客户想要添加新的子页面,并且想要为该子页面分配课程,他必须给我打电话,因为我必须为所有该页面创建新的页面类型和新的页面模板,为该新的子页面!那真的很糟糕
是否有一种方法可以通过子页面过滤信息?或者有什么技巧可以让系统自动创建新的页面类型
更新:
解决方案1:
我试过了,效果还不错,但我认为这是一个糟糕的做法。
在课程
数据对象中,我添加了一个新的db
字段urlsecgment
,用户必须在其中映射一些url段,如页面url上的url。我将在一页上过滤所有内容
public function Courses()
{
if($this->URLSegment == "all-courses") {
return Courses::get();
}else {
$c = Courses::get()->filter(array(
'UrlSegment' => $this->URLSegment
))->sort('Featured', 'DESC');
return $c;
}
}
为什么不让客户将课程链接到他想要的页面(例如使用
hay\u many
或many\u many
关系)?这可以通过courses-subpage上的GridField完成。您可以添加courses 1:n CourseCategory关系并按其过滤?无需制作单独的子页面,您可以使用课程控制器中的操作进行过滤。例如,请参阅此处列出的其他课程。我的客户希望有单独的子页面。我已经有了1:n
关系为什么不让客户将课程链接到他想要的页面(例如使用hay\u many
或many\u many
关系)?这可以通过courses-subpage上的GridField完成。您可以添加courses 1:n CourseCategory关系并按其过滤?无需制作单独的子页面,您可以使用课程控制器中的操作进行过滤。例如,请参阅此处列出的其他课程。我的客户希望有单独的子页面。我已经有了1:n
关系