gpt4 book ai didi

javascript - 使用数据对象的变量创建一个 js 文件 - Silverstripe 3.1

转载 作者:行者123 更新时间:2023-11-28 15:54:31 25 4
gpt4 key购买 nike

我编写了一个 ModelAdmin 来管理我网站的 Imageslider。由 ModelAdmin 管理的一个数据对象是“SliderSettings”。您可以在那里设置 slider 行为。

此处设置的变量应保存到 js 文件中并包含到模板中。我知道如果您使用 Controller ,您可以使用变量创建内联js。但这不适用于 Dataobjects 并创建内联 js,有没有办法使用我的 Dataobject 执行此操作并创建一个文件而不是内联 js?

这是我的代码 http://sspaste.com/paste/show/525d094569329

提前谢谢您

最佳答案

我强烈建议不要编写文件,而是建议使用Requirements::customScript()

是的,如果你把它放在不被调用的地方(在 DataObject 中),那将毫无用处因此,让我们将其放在有意义的地方,例如 Page_Controller->init(),
当然,然后我们需要获取 SliderSettings 对象,这可以通过 SliderSettings::get()->First() 来完成,这会为您提供数据库中的第一个 SliderSettings 对象,如果您想获取特定的一个,您可以也可以通过ID获取:SliderSettings::get()->byID(42)

class Page_Controller extends ContentController {
public function init() {
parent::init();
$sliderSettings = SliderSettings::get()->First();
if ($sliderSettings) {
$sliderSettings = Convert::array2json(array(
'SliderEffect' => $sliderSettings->SliderEffect,
'SliderCaptions' => $sliderSettings->SliderCaptions,
'SliderRandom' => $sliderSettings->SliderRandom,
'SliderTicker' => $sliderSettings->SliderTicker,
'SliderPager' => $sliderSettings->SliderPager,
'SliderControls' => $sliderSettings->SliderControls,
'SliderStart' => $sliderSettings->SliderStart,
'SliderAdaptive' => $sliderSettings->SliderAdaptive,
'SliderSpeed' => $sliderSettings->SliderSpeed,
'SliderPause' => $sliderSettings->SliderPause,
));
Requirements::customScript("var sliderSettings = $sliderSettings;");
// Requirements::customScript will put it at the bottom of the HTML, if you need it above the other JS files, you can put it into the header with the following workaround/hack: (if you use this, remove the Requirements::customScript line)
// Requirements::insertHeadTags("<script type='text/javascript'>var sliderSettings = $sliderSettings;</script>");
}
}
}

就是这样,现在您应该在 javascript 中有一个名为 sliderSettings 的变量。
该变量是一个对象,因此您可以像这样访问它:sliderSettings.SliderEffectsliderSettings['SliderEffect']
注意:该变量将位于 JS 文件之后,因此它不能直接在代码中使用,但您可以在 $(document).ready(function() { 内部访问它}).

关于javascript - 使用数据对象的变量创建一个 js 文件 - Silverstripe 3.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19377806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com