在Silverstripe中将屏幕宽度传递给控制器

时间:2014-09-02 21:11:44

标签: javascript php silverstripe

我正在开展Silverstripe项目,我希望根据屏幕的宽度加载不同尺寸的图像。

例如,模板代码可能如下所示:

<img src="$BackgroundImage.SetWidth($ScreenWidth).URL"/>

如果我使用标准PHP,我可以运行一些Javascript,将屏幕宽度作为帖子信息返回,或者将其放在可以通过PHP访问的cookie中。

在Silverstripe中,模板是在运行任何javascript之前预先渲染的,因此我无法确定如何将屏幕宽度信息传递给Controller。

我应该怎么做?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

你实际上也可以这样做。如果您的屏幕宽度与当前请求相符,您可以在控制器内检查:

  • 如果缺少屏幕宽度,您只需返回包含JavaScript的页面以确定屏幕宽度,并将get参数添加到当前URL并转发到新URL,运行屏幕宽度为参数的post请求JS到同一个控制器或只是在设置cookie后刷新页面。
  • 如果参数设置是因为在上一步中完成了,您只需显示包含调整后背景图像的页面。