我有一个PHP页面,生成一个元素数组.为简单起见,我们假设它按数字顺序包含数字1-5.这些数字需要相等(或尽可能接近相等)分成两列(使用html表),如下所示:
1 4
2 5
3
Run Code Online (Sandbox Code Playgroud)
列数可能会在将来发生变化.由于这是对表示级别的更改,因此我认为它应该是可以通过仅在模板文件中进行更改来实现的.这告诉我,应该处理将元素划分为列的Smarty.
有没有办法用Smarty(以及如何)实现这一点,还是应该让php文件完成所有工作?
我可以使用编译模板发送我的应用程序吗
我在速度的所有编译模板中都有这样的东西吗?或者他们每次运行都必须重新编译?
我正在使用树枝模板引擎.
我基本上有一个循环通过资源的数组,但是我已经在其中添加了另一个具有密钥的数组,基于顶级数组中的循环索引
所以它看起来像
array("0" => array("a", "b",
"1" => array("d", "e");
Run Code Online (Sandbox Code Playgroud)
和一个去的数组
array("0" => array("food", "drink",
"1" => array("sport", "games");
Run Code Online (Sandbox Code Playgroud)
如果我做{{loop.index}}我从第一个数组得到0和1,这很好
我想要做的是传递{{loop.index}}
到这个for循环
{% for embedData in shareData %}
{{embedData.embed}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
所以我可以根据第一个数组键从第二个数组中获取数组值
反正有没有这样做?
我正在使用Jinja和Flask(启用自动启用),我正在尝试应用此过滤器
import re
from jinja2 import evalcontextfilter, Markup, escape
_paragraph_re = re.compile(r'(?:\r\n|\r|\n){2,}')
app = Flask(__name__)
@app.template_filter()
@evalcontextfilter
def nl2br(eval_ctx, value):
result = u'\n\n'.join(u'<p>%s</p>' % p.replace('\n', '<br>\n') \
for p in _paragraph_re.split(escape(value)))
if eval_ctx.autoescape:
result = Markup(result)
return result
Run Code Online (Sandbox Code Playgroud)
它的问题在于它从不应用<br>
s并且总是<p>
在每条线周围应用s.
如果我输入:
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
在a中textarea
,它被保存到数据库中作为"u'1\r \n2\r \n\r \n \n \n \n\r \n \n \n \n4'",当使用|nl2br
过滤器放入Jinja时,它会以
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
Run Code Online (Sandbox Code Playgroud)
我正在寻找它
<p>1<br>2</p>
<p>3<br>4</p>
Run Code Online (Sandbox Code Playgroud)
这个正则表达式方法对我所追求的东西来说似乎有些过分.
请告诉我有一种更简单的方法可以实现这一目标,因为我一整天都在拔头发试图解决这个问题......
假设我有一个 freemarker 宏:
<#macro helloObject>
World
</#macro>
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我可以轻松调用它:
Hello, <@helloObject/>!
Run Code Online (Sandbox Code Playgroud)
但是插入它的语法是什么,例如,如果它是字符串的一部分?
<#assign greeting="Hello, <@helloObject>!" /> <#-- doesn't work -->
<#assign greeting="Hello, ${helloObject}!" /> <#-- doesn't work -->
<#assign greeting="Hello, ${@helloObject}!" /> <#-- doesn't work -->
<#assign greeting="Hello, ${<@helloObject/>}!" /> <#-- doesn't work -->
<#assign greeting="Hello, @helloObject!" /> <#-- doesn't work -->
${greeting}
Run Code Online (Sandbox Code Playgroud) template-engine freemarker templating templating-engine string-interpolation
我是第一次练习百里香模板引擎.我已经按照教程等等,但我不知道我哪里出错了.
我的控制器:
public String mainPage(Model model){
model.addAttribute("data", "Hello Thymeleaf");
return "main";
}
Run Code Online (Sandbox Code Playgroud)
我的HTML如下:
<!DOCTYPE html >
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>th:text="${data}"</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我点击localhost时,它显示th:text ="$ {data}"而不是Hello Thymeleaf
<h1>"${data}"</h1>
Run Code Online (Sandbox Code Playgroud)
也不起作用.查看解析程序配置必须正确,因为它将main解析为main.html.我正在使用spring4 SpringTemplateEngine和spring4百万美元视图解析器.
提前致谢
java ×2
php ×2
flask ×1
freemarker ×1
jinja2 ×1
python ×1
regex ×1
smarty ×1
spring ×1
spring-mvc ×1
templating ×1
thymeleaf ×1
twig ×1
velocity ×1