通用 类 Silverstripe 3.2
Generic classes Silverstripe 3.2
我有几个跨多个不同页面和数据对象使用的通用函数。我正在尝试找出存放这些东西的最佳位置。目前我在 Page.php 中有它们,但由于它们不适用于所有页面,我想将它们移动并存储在 classes 中的 mysite/code 子文件夹中,称为 helpers。如果需要,这也将帮助下一个开发人员定位和更新这些 classes。 (我可以将它留在 Page.php class 中,如果这是在 silverstripe 中完成的方式)
<?php
public class GetPublishedArticles {
public function GetAllPublishedArticlesByType($class){
error_log('Hit GPA',0);
$pages = $class::get();//->filter(array('Published'=>1));
if($pages->count()){
return $pages;
}
else{
return false;
}
}
}
Template:
<% loop GetAllPublishedArticlesByType('Page') %>
$Link
<% end_loop %>
我尝试过的东西。
- 将它们添加到 mysite/code/helpers 文件夹,运行 a dev/build/flush=all 但无论什么功能都不会被命中。即使我在其中的任何地方键入乱码,它也不会抛出 php 错误
- 正在将它们添加到 mysite/code 文件夹。 运行 a dev/build/flush=all 强制进行一些更改,在此处输入乱码会导致开发构建时出现 php 错误。仍然无法从模板访问
- 我尝试将 class GetPublishedArticles 添加到 Page.php 上的 $has_one 数组 - 仍然没有。
- 将函数直接添加到 page.php。 - 这按预期工作。
那么我该如何使用这个可重复使用的代码呢?将它添加到页面是可行的,但可能会使其他开发人员在尝试更改时难以定位。
从模板来看,函数定义在
- 当前控制器(Page_Controller)
- 控制器故障转移对象(页)
为了使某些功能在不同的页面上可用,但保持DRY原则,您应该将它们定义为扩展,并为选定的页面类型声明扩展。
class PublishedArticlesController extends Extension {
// define your methods
}
# in mysite/_config/config.yml
ArticlePage_Controller:
extensions:
- PublishedArticlesController
我有几个跨多个不同页面和数据对象使用的通用函数。我正在尝试找出存放这些东西的最佳位置。目前我在 Page.php 中有它们,但由于它们不适用于所有页面,我想将它们移动并存储在 classes 中的 mysite/code 子文件夹中,称为 helpers。如果需要,这也将帮助下一个开发人员定位和更新这些 classes。 (我可以将它留在 Page.php class 中,如果这是在 silverstripe 中完成的方式)
<?php
public class GetPublishedArticles {
public function GetAllPublishedArticlesByType($class){
error_log('Hit GPA',0);
$pages = $class::get();//->filter(array('Published'=>1));
if($pages->count()){
return $pages;
}
else{
return false;
}
}
}
Template:
<% loop GetAllPublishedArticlesByType('Page') %>
$Link
<% end_loop %>
我尝试过的东西。
- 将它们添加到 mysite/code/helpers 文件夹,运行 a dev/build/flush=all 但无论什么功能都不会被命中。即使我在其中的任何地方键入乱码,它也不会抛出 php 错误
- 正在将它们添加到 mysite/code 文件夹。 运行 a dev/build/flush=all 强制进行一些更改,在此处输入乱码会导致开发构建时出现 php 错误。仍然无法从模板访问
- 我尝试将 class GetPublishedArticles 添加到 Page.php 上的 $has_one 数组 - 仍然没有。
- 将函数直接添加到 page.php。 - 这按预期工作。
那么我该如何使用这个可重复使用的代码呢?将它添加到页面是可行的,但可能会使其他开发人员在尝试更改时难以定位。
从模板来看,函数定义在
- 当前控制器(Page_Controller)
- 控制器故障转移对象(页)
为了使某些功能在不同的页面上可用,但保持DRY原则,您应该将它们定义为扩展,并为选定的页面类型声明扩展。
class PublishedArticlesController extends Extension {
// define your methods
}
# in mysite/_config/config.yml
ArticlePage_Controller:
extensions:
- PublishedArticlesController