Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建一个js文件,其中包含dataobject-Sivlerstripe 3.1的变量_Javascript_Silverstripe - Fatal编程技术网

Javascript 创建一个js文件,其中包含dataobject-Sivlerstripe 3.1的变量

Javascript 创建一个js文件,其中包含dataobject-Sivlerstripe 3.1的变量,javascript,silverstripe,Javascript,Silverstripe,我已经编写了一个ModelAdmin来管理我网站的Imageslider。 ModelAdmin管理的一个数据对象是“SliderSettings”。在那里可以设置滑块行为 此处设置的变量应保存到js文件中,并包含在模板中。 我知道如果你使用控制器,你可以用你的变量创建一个内嵌的js。但是这不能用于Dataobjects并创建内联js,有没有一种方法可以用于我的Dataobject并创建一个文件而不是内联js 这是我的密码 提前谢谢你你能用那样的东西吗 public function init(

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

此处设置的变量应保存到js文件中,并包含在模板中。 我知道如果你使用控制器,你可以用你的变量创建一个内嵌的js。但是这不能用于Dataobjects并创建内联js,有没有一种方法可以用于我的Dataobject并创建一个文件而不是内联js

这是我的密码


提前谢谢你

你能用那样的东西吗

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

    $sliderSettings = DataObject::get_by_id('SliderSettings ', $this->ID);
    if ( $sliderSettings )
    {
        $sliderSettings = Convert::raw2json( $sliderSettings->toMap() );
        Requirements::customScript(<<<JS
          var sliderSettings = $sliderSettings;
        JS
        );
    }
}

这将使模板中的
$SliderSettings
变量可用,您可以在任何地方使用。例如,在头中包含JSON(可能不是最好的…),或者在任何其他脚本之前,比如so
var sliderSetting=$SliderSettings

你能用这样的东西吗

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

    $sliderSettings = DataObject::get_by_id('SliderSettings ', $this->ID);
    if ( $sliderSettings )
    {
        $sliderSettings = Convert::raw2json( $sliderSettings->toMap() );
        Requirements::customScript(<<<JS
          var sliderSettings = $sliderSettings;
        JS
        );
    }
}

这将使模板中的
$SliderSettings
变量可用,您可以在任何地方使用。例如,在头中包含JSON(可能不是最好的…),或者在任何其他脚本之前,比如so
var sliderSetting=$SliderSettings

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

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

类页面\u控制器扩展ContentController{
公共函数init(){
父::init();
$sliderSettings=sliderSettings::get()->First();
如果($sliderSettings){
$sliderSettings=Convert::array2json(数组(
“SliderEffect”=>$sliderSettings->SliderEffect,
“SliderCaptions”=>$sliderSettings->SliderCaptions,
“SliderAndom”=>$sliderSettings->SliderAndom,
“SliderTicker”=>$sliderSettings->SliderTicker,
“SliderPage”=>$sliderSettings->SliderPage,
“SliderControl”=>$sliderSettings->SliderControl,
“SliderStart”=>$sliderSettings->SliderStart,
“SliderAdaptive”=>$sliderSettings->SliderAdaptive,
“SliderSpeed”=>$sliderSettings->SliderSpeed,
“SliderPause”=>$sliderSettings->SliderPause,
));
要求::自定义脚本(“var sliderSettings=$sliderSettings;”;
//Requirements::customScript将把它放在HTML的底部,如果您需要它放在其他JS文件的上面,您可以通过以下解决方法/破解将它放在标题中:(如果您使用此方法,请删除Requirements::customScript行)
//要求:插入标题标签(“var sliderSettings=$sliderSettings;”;
}
}
}
就是这样,现在您应该有一个名为
sliderSettings
的变量在javascript中可用。
此变量是一个对象,因此您可以按如下方式访问它:
sliderSettings.SliderEffect
sliderSettings['SliderEffect']


注意:变量将位于JS文件之后,因此它不会直接在代码中使用,但您可以在
$(文档)中访问它。ready(function(){})
我强烈建议不要编写文件,相反,我建议使用
Requirements::customScript()

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

类页面\u控制器扩展ContentController{
公共函数init(){
父::init();
$sliderSettings=sliderSettings::get()->First();
如果($sliderSettings){
$sliderSettings=Convert::array2json(数组(
“SliderEffect”=>$sliderSettings->SliderEffect,
“SliderCaptions”=>$sliderSettings->SliderCaptions,
“SliderAndom”=>$sliderSettings->SliderAndom,
“SliderTicker”=>$sliderSettings->SliderTicker,
“SliderPage”=>$sliderSettings->SliderPage,
“SliderControl”=>$sliderSettings->SliderControl,
“SliderStart”=>$sliderSettings->SliderStart,
“SliderAdaptive”=>$sliderSettings->SliderAdaptive,
“SliderSpeed”=>$sliderSettings->SliderSpeed,
“SliderPause”=>$sliderSettings->SliderPause,
));
要求::自定义脚本(“var sliderSettings=$sliderSettings;”;
//Requirements::customScript将把它放在HTML的底部,如果您需要它放在其他JS文件的上面,您可以通过以下解决方法/破解将它放在标题中:(如果您使用此方法,请删除Requirements::customScript行)
//要求:插入标题标签(“var sliderSettings=$sliderSettings;”;
}
}
}
就是这样,现在您应该有一个名为
sliderSettings
的变量在javascript中可用。
此变量是一个对象,因此您可以按如下方式访问它:
sliderSettings.SliderEffect
sliderSettings['SliderEffect']

注意:变量将为AFT
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>");
        }
    }
}