我正在使用 Silex 构建网站并使用 Twig 显示基于 json 文件的内容。
Controller 中的代码如下:
$app->get('/', function() use ($app) {
$data = $app['data']->get('contactUs', 'es');
return $app['twig']->render('test.html', $data);
});
Data 只是一个自定义类,它将要显示的页面和要使用的语言作为参数,并返回一个基于 json 文件的数组,Twig 将其用作页面上的数据。
问题是 json 文件包含 HTML 标签,当 Twig 呈现页面时,它会将它们显示为实体,例如,我的 test.html 模板如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Twit Test</title>
</head>
<body>
{{ bannerTitle }}
</body>
</html>
但是在 {{ bannerTitle }} 上输出以下内容:
<span class='title light'>Contact Us</span>
查看源代码是这样的:
<span class='title light'>Contacto y</span><br><span class='title'>Ubicación</span>
我查看了文档,我知道我可以在模板上使用原始过滤器来避免这种情况,如下所示:
{{ bannerTitle|raw }}
但我想尽可能保持模板上的代码干净,并避免将 raw 放入模板上的所有内容。
有没有办法告诉 Twig 始终将生成的输出视为原始的?
P.S:我也尝试用 htmlentities、html_entity_decode 等解析生成的数据,但没有成功 :(
最佳答案
我很确定这可以通过在 Twig 中使用 {% autoescape false %} {% endautoescape %} 标签来实现。
即
{% autoescape false %}
<!DOCTYPE html>
<html>
<head>
<title>Twit Test</title>
</head>
<body>
{{ bannerTitle }}
{{ moreHTMLdata }}
{{ evenMoreHTMLdata }}
</body>
</html>
{% endautoescape %}
更多信息在 http://twig.sensiolabs.org/doc/tags/autoescape.html
如果失败,给 {% filter raw %} {% endfilter %} 一个地方,这应该让您不必将 |raw 添加到每个变量。使用这些方法中的任何一种,只要记住 |escape 任何可能需要它的变量。
关于php - 在 Twig 中设置默认的原始过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185878/
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。
我有一个名为Post的类,我需要能够适应以下场景:如果用户选择了一个类别,则只显示该类别的帖子如果用户选择了一种类型,则只显示该类型的帖子如果用户选择了一个类别和类型,则只显示该类别中该类型的帖子如果用户没有选择任何内容,则显示所有帖子我想知道我的Controller是否不可避免地会因大量条件语句而显得粗糙...这是我解决此问题的错误方法-有谁知道我如何才能做到这一点?classPostsController 最佳答案 您最好遵循“胖模型,瘦Controller”的惯例,这意味着您应该将这种逻辑放在模型本身中。Post类应该能够报告
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl
我是ruby的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽
我仍然收到标题中的“错误”消息,但不知道如何解决。在ApplicationController中,classApplicationController在routes.rb#match'set_activity_account/:id/:value'=>'users#account_activity',:as=>:set_activity_account--thisdoesn'tworkaswell..resources:usersdomemberdoget:action_a,:action_bendcollectiondoget'account_activity'endend和User