草庐IT

php - 在 Laravel 中通过 TwigBridge 加载 Twig 扩展

coder 2024-05-03 原文

我想通过 TwigBridge 在 Laravel 中使用 Twig-extensions 包中的 truncate 过滤器,但我一直看到这个错误:

The filter "truncate" does not exist in "[template file]" at line [##].

我尝试将扩展添加到 laravel/app/config/packages/rcrowe/twigbridge/config.php 扩展数组中有几种不同的方法,但都没有用。

'Twig_Extensions_Extension_Text',

function () {
    return new Twig_Extensions_Extension_Text();
},

Composer 正确安装了文件,我能够使用相同的自动加载器从测试文件加载它。

需要哪些配置设置才能让 TwigBridge 加载此扩展?

最佳答案

好吧,我觉得有点笨,但让我们充分利用它。这是一个关于如何为 TwigBridge 启用额外的 Twig 扩展的非常明确的演练。在 Laravel 中。

TL;DR:扩展是在 extensions.php 中配置的,而不是 config.php

Composer

从这里开始。要么使用 Composer 的 require CLI 命令; composer require twig/extensions 或将以下行添加到您的 composer.json 文件中。

"twig/extensions": "1.2.*@dev",

如果您修改 composer.json,请务必运行 composer update 以便安装包。

配置 TwigBridge

要将 Twig 扩展添加到 TwigBridge,必须将它们添加到 laravel/app/config/packages/rcrowe/twigbridge/extensions.php 中的 enabled 数组。不是 config.php。尽管 config.php 中可能有一个扩展数组,并且它是配置其他所有内容的地方,但它不是启用扩展的地方。这在 TwigBridge 的文档中有详细说明,但很容易被忽视。我设法错过了好几次。

'enabled' => [
    'TwigBridge\Extension\Loader\Facades',
    'TwigBridge\Extension\Loader\Filters',
    // ...
    'Twig_Extensions_Extension_Text',   // <- add this
],

TwigBridge 的文档引用了一个config.php 文件,但配置文件似乎在不久前已重命名为twig.php。使用 artisan config:publish rcrowe/twigbridge 生成新配置产生了 twig.phpextensions.php 文件——没有 config。 php.我已经使用 TwigBridge 一段时间了,所以我还有一个在身边,可能会增加我的困惑。

扩展名称

每个扩展名都可以在扩展文件中找到——它们只是 Train_Case 类名。截至 2015 年 1 月,Twig-extensions project包含五个扩展,此处列出了它们及其包含的过滤器:

  • 数组 - Twig_Extensions_Extension_Array
    过滤器:随机播放
  • 日期 - Twig_Extensions_Extension_Date
    过滤器:time_diff
  • I18n - Twig_Extensions_Extension_I18n
    过滤器:trans
  • Intl - Twig_Extensions_Extension_Intl
    过滤器:localizedatelocalizednumberlocalizedcurrency
  • 文本 - Twig_Extensions_Extension_Text
    过滤器:truncate, wordwrap

关于php - 在 Laravel 中通过 TwigBridge 加载 Twig 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097072/

有关php - 在 Laravel 中通过 TwigBridge 加载 Twig 扩展的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  3. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  4. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  5. c - mkmf 在编译 C 扩展时忽略子文件夹中的文件 - 2

    我想这样组织C源代码:+/||___+ext||||___+native_extension||||___+lib||||||___(Sourcefilesarekeptinhere-maycontainsub-folders)||||___native_extension.c||___native_extension.h||___extconf.rb||___+lib||||___(Rubysourcecode)||___Rakefile我无法使此设置与mkmf一起正常工作。native_extension/lib中的文件(包含在native_extension.c中)将被完全忽略。

  6. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  7. ruby-on-rails - 向 Rails 3 添加 Ruby 扩展方法的最佳实践? - 2

    我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion

  8. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  9. ruby - 扩展类和实例 - 2

    这个问题有两个部分。在RubyProgrammingLanguage一书中,有一个使用模块扩展字符串对象和类的示例(第8.1.1节)。第一个问题。为什么如果您使用新方法扩展类,然后创建该类的对象/实例,则无法访问该方法?irb(main):001:0>moduleGreeter;defciao;"Ciao!";end;end=>nilirb(main):002:0>String.extend(Greeter)=>Stringirb(main):003:0>String.ciao=>"Ciao!"irb(main):004:0>x="foobar"=>"foobar"irb(main):

  10. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

随机推荐