假设我有以下模板:
嗨{{名字}}!欢迎回到{{博客}}。上次登录日期:{{ date }}。
允许用户输入模板和占位符/变量,因此我无法知道占位符会是什么样子。
我正在考虑创建这样的东西:
public string Render(string text, Dictionary<string,string> placeholders)
{
Template template = Template.Parse(text);
return template.Render(Hash.FromSomething(placeholders));
}
Run Code Online (Sandbox Code Playgroud)
有一种名为 FromDictionary 的方法,它接受字典,但我不太明白它是如何工作的。另一种选择是 FromAnonymousObject,但我不知道如何将 Dictionary 转换为匿名对象以适应目的。
任何想法将不胜感激!
我想使用 jinja2 进行单词模板,就像这篇短文中提到的那样。我面临的问题如下,如果我放入{{title}}我的 word 文件,生成的 xml 可能如下所示:
<w:r><w:t>{{</w:t></w:r><w:proofErr w:type="gramStart"/><w:r><w:t>title</w:t></w:r><w:proofErr w:type="gramEnd"/><w:r><w:t>}}</w:t></w:r></w:p>
Run Code Online (Sandbox Code Playgroud)
所以jinja不可能相应地替换它。是否有可能防止单词{{title}}在单独的文本元素中拆分?(如果我从文本编辑器复制它工作正常)
我想在Jadeif else中完成一个条件块,因此可以在 if/else 之后添加嵌套代码。
- var name = 'you';
- if(name != '')
p Hello #{name}
- else
p Hello world
| !!!
Run Code Online (Sandbox Code Playgroud)
我想要使用空名称 var
<p>Hello you!!!</p>
Run Code Online (Sandbox Code Playgroud)
但我得到
<p>Hello world</p>
!!!
Run Code Online (Sandbox Code Playgroud)
与name = you我想要得到
<p>Hello world!!!</p>
Run Code Online (Sandbox Code Playgroud)
我必须更改什么才能将更多文本/标签放入 p 元素中?我的意思是嵌套到 if/else 块中,并且对于这两种情况都是通用的。重点是不要在代码中重复!!!
像 try/catch 这样的 finally 块会很好,但它不存在。
layout使用Zend View时, Zend Expressive 默认为模板。我注意到PhpRendereraddTemplate($template)类中的函数,但是在哪里以及如何添加替代模板?layout
在操作的中间件工厂中,在操作本身中,还是在其他地方?
Freemaker 模板使用以下语法呈现变量:${name}
Javascript ES6 模板字符串具有类似的语法 ${name}
问题是当freemarker 在服务器上运行时,它会尝试渲染javascript 代码中的模板,因为Freemarker 认为它遇到了一个变量(实际上它是一个应该在客户端渲染的javascript 模板)。关于如何处理的建议?
一种方法是将所有 JS 包装在一个 freemarker 注释中(因此它永远不会被评估),
或者将 JS 代码放在一个单独的文件中(没有内联在 html 页面中),这样它就不会被 freemarker 评估。
谁知道如何用Mako格式化字符串的长度?
相当于打印"%20s%10s"%("字符串1","字符串2")?
我得到了Liquid error: undefined method 'to_liquid' for #<Email:0x007f9ca1a62d28>我的错误Email发送使用视图内的液体模板的电子邮件时对象.但是,当我在浏览器中自己渲染视图时,它工作得很好!
这是我的观点:
= raw @template.render('email' => @email, 'organization' => @organization)
%p= sanitize("<a href='{{ unsubscribe_url }}''>Click here to unsubscribe</a>")
%p{style:'text-align:center;'}
Sent with
= link_to 'Vocalem', 'http://vocalem.com'
Run Code Online (Sandbox Code Playgroud)
我的邮件的相关部分:
class BulkMailer < ActionMailer::Base
def bulk_email(recipients, email, organization)
...
@organization = organization
@email = email
@template = Liquid::Template.parse(organization.current_email_template.body)
Run Code Online (Sandbox Code Playgroud)
相关型号代码:
liquid_methods :subject, :body, :id
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的是,Liquid的一个例子给出了错误(但在普通视图中正常工作!):
{{email.body}}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,{{organization.display_name}}不会抛出错误,但在电子邮件中只是完全空白(尽管在普通视图中再次正常工作).
任何线索可能会发生在这里?
我试图显示所有国家的下降.在编辑页面中,我想将国家/地区设为选中状态.说India的selected=selected.
<div class="large-3 columns">
{{ Form::label('country') }}
</div>
<div class="large-4 columns">
@include("common.country")
</div>
Run Code Online (Sandbox Code Playgroud)
我该怎么做 是否可以传递数组中的值@include("common.country")?
如何在freemarker中连接字符串?
这行不通。
<#function foo input>
<#local str="Hello ">
${str} = ${str} + ${" world"}
<#return str>
</#function>
${foo("a")}
Run Code Online (Sandbox Code Playgroud)
这是在线评估者:http :
//freemarker-online.kenshoo.com/
编辑:为了清楚起见,我需要将其与变量一起使用,以便能够编写类似这样的内容。
public String sayHello() {return "Hello";}
public String sayWorld() {return "world"};
public String sayPeople() {return "people";}
public void main() {
String str = "";
str += sayHello();
str += "";
str += sayWorld();
str += "";
str += sayPeople();
return str;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Dancer2来构建Web应用程序.它工作得很好但是当我在浏览器中查看源代码时,生成的HTML源代码充满了分散的空白,就像这样
<tr>
<td>2</td>
<td>Cheeseburger</td>
<td>4.50 €</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我的模板<% ... %>在现在空白的地方有代码.我更喜欢它看起来像这样:
<tr>
<td>2</td>
<td>Cheeseburger</td>
<td>4.50 €</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
或者,甚至更好:
<tr><td>2</td><td>Cheeseburger</td><td>4.50 €</td></tr>
Run Code Online (Sandbox Code Playgroud)
我正在使用Template :: Toolkit,并认为该TRIM属性正是我需要的,并将其添加到我的config.yml:
template: "template_toolkit"
session: "YAML"
engines:
session:
YAML:
cookie_duration: 6 months
template:
template_toolkit:
start_tag: '<%'
end_tag: '%>'
TRIM: '1'
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我已经改变start_tag和end_tag不同的东西(验证此文件被读取)和实际工作.但是TRIM选项没有.
我使用了错误的选项或在错误的地方提供它吗?我所做的所有谷歌搜索都展示了如何以编程方式设置TT选项,例如在这个答案中.但由于我没有明确地实例化TT相关的任何内容,我甚至不知道应该在哪里放置这样的代码.
我创建了我的应用程序dancer2 -a so.
意见/ index.tt
<table>
<tbody>
<% FOREACH item in group.items %>
<tr>
<td><% item.order_num %></td>
<%# one-line comment %>
<%# one-line …Run Code Online (Sandbox Code Playgroud)