草庐IT

php - 将 session 传递给 TWIG 模板

当我想使用slimmicroFramework在twig模板中获取$_SESSION['session'];时遇到问题。这是我的代码:{{title}}welcome{{body}}logout我无法使用该代码获取session用户名。关于如何将session传递给twig模板有什么建议吗? 最佳答案 你应该将session注册为一个全局的Twig,这样它就可以在你的模板中访问。//$twigisa\Twig_Environmentinstance$twig->addGlobal("session",$_SESSION);在你的模板

php - 如何在 symfony2 中缩小缓存的 Twig 模板 HTML 和内联 CSS、JS 代码?

我正在使用symfony2.3,我想提供一个缩小的HTML以及内联CSS和JS。我知道有一些bundle可以做到这一点,但它使用onKernelResponse事件监听器即时缩小了所有内容,我尝试了“MatTheCat/HtmlCompressorBundle”,但在检查服务器响应时间后,请求总时间和使用后的内存使用情况我发现这些性能指标变得最差。我认为完成此任务的最佳方法是在编译twig文件时执行缩小操作,这样它只会在生产环境中缩小。我已经使用asseticbundle来缩小js和css文件。我怎样才能完成这个任务? 最佳答案 这

php - 如何访问 Twig 模板中的 JSON 数据?

我正在使用Symfony2并向api发出phpcurl请求。我希望确保结果以正确的形式返回:作为jsonstring(不是php对象或其他东西)。返回的json字符串由renderAPIResults()使用,它使用twig来“呈现”JsonResponse。这可能吗?我可以在renderAPIResults中“渲染”响应,还是需要返回一个JsonResponse并让twig模板渲染它,具有被apiAction()调用了吗?是否有任何内置的Symfony2功能,其中如果一个模板命名为results.json.twig与results.html.twig,或者这个命名约定只是惯用语?我已

php - 在 Twig Loader 链的顶部添加新的 Twig Loader

我想创建一个新的TwigLoader类并让它在Symfony的TwigLoader类之前触发。这Stackoverflowquestion/answer很有帮助,但是我无法定义权重,因此只有当Symfony的加载器找不到模板时,我的自定义加载器才会触发。我希望该逻辑包含在我的包中,所以我不想想:在app/config.yml中定义我的自定义TwigLoader覆盖Symfony的TwigLoader目前,SymfonyTwig加载器要么退回到默认的Twig加载机制,要么如果路径类似于@Bundle:Controller:Action.format.engine将尝试加载文件@Bundl

php - Twig - 从包含的或父模板渲染 block

有什么方法可以从包含的模板或父模板中渲染block吗?我有3个模板main.html.twig:{%include'navbar.html.twig'%}{%blockapplication_content%}{%endblockapplication_content%}{%blockapplication_footer%}footer{%endblockapplication_footer%}navbar.html.twig:blabla{%blocknavbar_profile_photo%}{%endblocknavbar_profile_photo%}content.html.

php - 为什么 Twig 扩展标签有时看不到一些变量?

在Symfony2中我创建了简单的Action:publicfunctiontestAction(){return$this->render('TestBundle::test.html.twig',array('testBool'=>true,'testTplPath'=>'TestBundle::base.html.twig'));}base.html.twig:{%blockcontent%}{%endblock%}现在我的test.html.twig模板中的extends标签有问题,如果我在这个标签中使用简单的字符串,如下所示:{%extends'TestBundle::bas

php - 在 include 中设置 Twig 变量并在之后使用它

假设您有一个包含另一个模板的Twig模板(tplA.twig)TwigtemplateA{%settest="intplA"%}first,variableis:{{test}}{%include"tplB.twig"%}andthevariableis:{{test}}和包含的模板(tplB.twig)ContentoftplB{%settest="nowistplB"%}在包含的模板中设置/更改变量并在主模板中使用它的最佳方法是什么?如何使用全局变量?请注意,我不能使用block和扩展,而且我没有使用Symfony。非常感谢编辑真正的上下文是一个非常基本的多语言结构。对于一个页面,

php - 有什么方法可以用微秒来渲染日期吗?

当您无权访问twig实例时,是否有任何方法可以呈现一个以微秒表示当前时间的字符串?我的意思是,只能使用模板,不能以任何方式扩展twig。使用以下模板:{{"now"|date("Ymd_His")}}我可以获得日期和时间的分数,但我想要的结果是20150616_202042.123456^--hereisthemostinterestingpart那么基于纯模板的解决方案有机会吗?我已经进行了研究,我能找到的所有内容都暗示着扩展Twig引擎,而在当前情况下我无法做到这一点。UPD:我正在寻找的解决方案不受明确使用date()函数的限制,并且可以使用twig模板中允许的任何内容。UPD2

php - 在安装了 Twig 的 PHPUnit 中进行单元测试

当我运行PHPUnit时,它会尝试在意想不到的位置(即Twig安装目录)运行测试文件,并多次尝试加载Twig类文件。有谁知道如何解决这些问题?背景我正在使用Twig(只是Twig,不是Symfony)在网络应用程序中,通过Composer安装Twig。Composer和Twig安装在自定义位置,我的测试在/test/中,所以我有以下简化的项目结构:/src/includes/vendor/autoload.phpcomposer/twig/twig/lib/test//test/bootstrap.php(variousfilesnamed,e.g.,someClassTest.php

php - 为每个 Twig 设置翻译域

我有一些Twig包含需要翻译的文本。目前我把这句话放在每一个Twig上。{%trans_default_domain'AcmeTopBundle'%}不过有点麻烦。有没有一种好方法可以在一个地方为每个Twig设置默认域?? 最佳答案 可以在原来的Symfony\Bridge\Twig\NodeVisitor\TranslationDefaultDomainNodeVisitor的基础上写一个自定义节点访问器:https://gist.github.com/connorhu/3254272188d81d1f9d7322dbdebeb0