Silverstripe - 对另一个控制器的要求
Silverstripe - Requirements on another controller
我使用灯箱和效果构建了一个图库模块。我想要做的是在 GalleryController 而不是 PageController 上包含 css 和 js 要求,但它似乎不起作用。
我有一个 Gallery 扩展了 DataExtension,然后我有一个 GalleryController 扩展了 Extension。然后在我的 _config 文件中,我将 ContentController 指向我的 GalleryController:
SiteTree::add_extension('Gallery');
Object::add_extension('ContentController', 'GalleryController');
GalleryController 正在工作,因为它正在为我获取 Gallery 对象。
此控制器的要求不起作用。
图库控制器:
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 的另一个控制器的要求?
SilverStripe 中的扩展不允许您重载 public API,您只能扩充它。看起来这就是您尝试使用 GalleryController 扩展程序执行的操作。
在这种情况下,您会在 SiteTree 对象上看到 ContentController::init
provides an extension point contentcontrollerInit
- 您应该使用它来添加您的要求。这可以添加到您的 Gallery DataExtension class:
# Class: Gallery.php
public function contentcontrollerInit()
{
Requirements::javascript('...');
}
我使用灯箱和效果构建了一个图库模块。我想要做的是在 GalleryController 而不是 PageController 上包含 css 和 js 要求,但它似乎不起作用。
我有一个 Gallery 扩展了 DataExtension,然后我有一个 GalleryController 扩展了 Extension。然后在我的 _config 文件中,我将 ContentController 指向我的 GalleryController:
SiteTree::add_extension('Gallery');
Object::add_extension('ContentController', 'GalleryController');
GalleryController 正在工作,因为它正在为我获取 Gallery 对象。 此控制器的要求不起作用。
图库控制器:
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 的另一个控制器的要求?
SilverStripe 中的扩展不允许您重载 public API,您只能扩充它。看起来这就是您尝试使用 GalleryController 扩展程序执行的操作。
在这种情况下,您会在 SiteTree 对象上看到 ContentController::init
provides an extension point contentcontrollerInit
- 您应该使用它来添加您的要求。这可以添加到您的 Gallery DataExtension class:
# Class: Gallery.php
public function contentcontrollerInit()
{
Requirements::javascript('...');
}