2014-09-02 18 views
1

我已经在Silverstripe项目上工作,我想根据屏幕宽度加载不同大小的图像。将屏幕宽度传递给银条中的控制器

例如模板代码看起来是这样的:

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

如果我是用标准的PHP我可以运行一些JavaScript代码,返回屏幕宽度的发布信息或把它放在一个cookie可能访问通过PHP。

在银条纹模板是预先呈现之前,任何JavaScript运行,所以我不知道如何将屏幕宽度信息传递到控制器。

我应该怎么办?

+1

看一看这个模块: https://github.com/heyday/silverstripe-responsive-images – 3dgoo 2014-09-02 22:33:45

+0

@ 3dgoo - 这是一个全屏画廊应用程序,以便我想将图像的大小调整为最接近50像素的屏幕宽度。如果我无法制定出另一种方法,那么该模块是一个很好的选择。 – BaronGrivet 2014-09-02 23:18:13

回答

0

你实际上也可以这样做。你可以在控制器中检查是否有与当前请求的屏幕宽度:

  • 如果屏幕宽度想念你刚刚返回包含JavaScript来确定屏幕宽度的页面,要么添加一个GET参数到当前的URL并转发到新的URL,以JS的屏幕宽度作为参数运行发布请求到同一控制器,或者在设置cookie后刷新页面。
  • 如果因为在上一步中完成了参数而设置了参数,那么您可以使用调整后的背景图像显示页面。