Silverstripe - 对另一个控制器的要求

时间:2017-06-13 09:12:49

标签: controller silverstripe requirements

我使用灯箱和效果构建了一个图库模块。我想要做的是在GalleryController而不是PageController上包含css和js要求,但它似乎不起作用。

我有一个扩展DataExtension的Gallery,然后我有一个扩展Extension的GalleryController。然后在我的_config文件中,我将ContentController指向我的GalleryController:

SiteTree::add_extension('Gallery');
Object::add_extension('ContentController', 'GalleryController');

GalleryController工作正在为我获取Gallery对象。 这个控制器的要求不起作用。

GalleryController:

public function init() {
    parent::init(); 

    //Load CSS requirements
    Requirements::css("ImageGallery/css/lightgallery.min.css");

    //Load Javascript requirements
    Requirements::javascript("ImageGallery/js/lightgallery.min.js");

我是否需要做其他事情以将要求包含在另一个非PageController的控制器上?

1 个答案:

答案 0 :(得分:6)

SilverStripe中的扩展程序不允许您重载公共API,您只能对其进行扩充。看起来这就是您尝试使用GalleryController扩展。

在这种情况下,您会在SiteTree对象上看到ContentController::init provides an extension point contentcontrollerInit - 您应该使用它来添加您的要求。这可以添加到您的Gallery DataExtension类:

# Class: Gallery.php
public function contentcontrollerInit()
{
    Requirements::javascript('...');
}