javascript - 如何在 Silverstripe CMS 中使用 javascript?

标签 javascript silverstripe

我正在使用 SilverStripe 3.0 CMS,我需要在 CMS 中包含 Google map 。

我正在关注 this steps ,而且它有点旧,official documentation在当前版本的SilverStripe中使用相同的方法(至少它似乎是当前版本的文档)。

问题出在这部分代码中:

Behaviour.register({ 
    "#Form_EditForm" : { 
        initialize : function() { 
            this.observeMethod("PageLoaded", this.adminPageHandler); 
            this.adminPageHandler(); 
        }, 
        adminPageHandler : function() { 
            initialize(); 
        } 
    } 
}); 

首先,没有定义Behavior。我需要手动包含框架内的 behavior.js 文件。但是现在,我得到一个类型错误:

this.observeMethod is not a function

有人可以提示我如何在 SilverStripe CMS 中打开页面编辑器时调用 javascript 函数吗?

最佳答案

您提到的“Behaviour.register”调用已明确弃用,并且在核心代码中不再可用,因此需要在此处更新文档。

不幸的是,我找不到替代此行为的记录方式,但目前,根据您第一手提到的论坛帖子中的方法,以下内容应该对您有用:

在此处找到添加的“initGoogleMaps.js”脚本:

function getCMSFields() { 
Requirements::javascript('mysite/javascript/initGoogleMaps.js');  
...

在此脚本中,删除 Behaviour.register... block ,并将 initialize 函数移至外部 document.ready(或简单地删除 document.ready 部分),因此 initialize 是全局可用的(您可以考虑重命名它)。

然后,在 getCMSFields 中添加以下内容:

$fields->addFieldToTab('Root.Content', new LiteralField('js', '<script>initialize();</script>'));

这将确保每次在 cms 中呈现页面的“编辑 View ”时调用 initialize 函数。

第一个

关于javascript - 如何在 Silverstripe CMS 中使用 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994174/

相关文章:

php - 如何在 Silverstripe 中循环模板

php - 银条 : How to get all records using get()

php - SilverStripe 从 SiteTree 关系返回 URLSegment

php - 是否可以检测 HTTPRequest 是否可用?

javascript - 通过 Parse Cloud 代码进行 HTTP 请求

javascript - 如何按第一个按钮,然后第二个按钮停止?

javascript元音字母转大写,辅音字母转小写

java - 在 Java 中,如何在单个 JSON 对象中表示多个对象(相同类型)

javascript - Silverstripe 要求组合文件 CSS 和 JS

javascript - Moment.js 如果没有小时或分钟则填充 0