10

我想在游戏框架中使用Bootstraps 字形图标

所以当我使用时<i class="icon-search" />,引导程序正在“assets/img/...”中寻找图标。此行为与播放应用程序的结构相冲突,因为图像位于“assets/images/...”中。

所以我试图通过为“assets/img”的 GET 请求定义一个额外的路由来重新映射它:

# Map static resources from the /public folder to the /assets URL path
GET     /assets/img/*file           controllers.Assets.at(path="/public/images", file)
GET     /assets/*file               controllers.Assets.at(path="/public", file)

但是这样做,我得到一个编译错误“没有足够的方法参数:(路径:字符串,文件:字符串)play.api.mvc.Call。未指定的值参数文件。”在我调用的所有其他公共资产上。

我究竟做错了什么?

4

3 回答 3

9

实际上描述我的问题帮助我在这里搜索它;) ...stackoverflow 已经有了答案。希望我的问题至少与我自己回答的这个问题有更多的相关性。

根据How to use Twitter Bootstrap 2 with play framework 2.x我必须为每个单独的 glyphicons 文件定义静态路由,然后对其他资产的请求不会被“错误路由”。

我只是添加了

# Map Bootstrap images
GET     /assets/img/glyphicons-halflings.png            controllers.Assets.at(path="/public", file="/images/glyphicons-halflings.png")
GET       /assets/img/glyphicons-halflings-white.png      controllers.Assets.at(path="/public", file="/images/glyphicons-halflings-white.png")

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

到我的路线,所以我不需要以特殊方式修改任何框架。

无论如何感谢您的建议

于 2013-03-11T17:41:22.607 回答
4

实际上...人们经常将某些初始结构与它必须完全相同。如果是app文件夹,那是正确的。Play 使用了一些隐含的导入,controllers并且models无缘无故地改变它会带来更多的麻烦而不是它的价值。无论如何public,文件夹不会在任何默认操作/控制器/视图中呈现,因此可以完全自定义其布局。

(注意:好的,我必须承认,我没有读过这个文档,他们写道你应该像这样组织你的静态资产以保持所有 Play 应用程序的一致性。但这不是真的!:))

一般规则是:不要破坏放在publicdir 中的即用型框架、插件等。例如,虽然您可以通过一些额外的路线很容易地修改引导程序,但如果您尝试使用 Aloha 编辑器进行相同操作,您可能会永久损坏它。如果你想保持一个干净的结构 - 创建一个示例public/frameworks/bootstrap-current文件夹并从原始作者那里提取包。

只需简单的解压缩包,它就可以让您更新到较新的版本,也可以避免您的头痛。

于 2013-03-12T20:29:41.123 回答
2

如果您使用的是 Bootstrap LESS,请更改 variables.less 中的路径:

// Sprite icons path
// -------------------------
@iconSpritePath:          "assets/images/techcore/glyphicons-halflings.png";
于 2013-03-11T17:30:47.947 回答