【问题标题】:Symfony2 Twig extensionSymfony2 Twig 扩展
【发布时间】:2023-03-23 08:45:01
【问题描述】:

我在实现树枝扩展时遇到了一些问题。我需要创建自己的过滤器(一个 substr 过滤器)。所以我想到了使用树枝扩展。

我在 MyApp\Bundle\WebsiteBundle\ 和文件上创建了一个名为“Extension”的文件夹: 网站扩展.php

namespace Bundle\WebsiteBundle\Extension;

class WebsiteExtension extends \Twig_Extension {

    public function getFilters() {
        return array(
            'substr'  => new \Twig_Filter_Method($this, 'substrFilter'),
        );
    }

    public function substrFilter($sentence, $start, $end) {
        return substr($sentence, $start, $end);
    }

    public function getName()
    {
        return 'website_extension';
    }
}

然后在 /app/config 上的 config.yml 上

services:
    Website.twig.extension:
        class: MyApp\Bundle\WebsiteBundle\Extension\WebsiteExtension
        tags:
            - { name: twig.extension }

但发生错误:

"Fatal error: Class 'MyApp\Bundle\WebsiteBundle\Extension\WebsiteExtension' not found in .../appDevDebugProjectContainer.php on line 1391"

这很奇怪,因为文件和类存在......我错过了什么但是什么?

【问题讨论】:

  • 您是否将 MyApp 命名空间添加到 autoload.php 中?
  • @igorw 我有'MyApp' => DIR.'/../src',够了吗?

标签: php templates symfony twig


【解决方案1】:

替换这个

namespace Bundle\WebsiteBundle\Extension;

由此

namespace MyApp\Bundle\WebsiteBundle\Extension;

你需要什么目录Bundle/WebsiteBundle
Bundle不够吗?

你可以在这里看到我是如何实现这个的 https://github.com/azat/blog/blob/master/src/Blog/WebBundle/Twig/Extension/WebExtension.php

【讨论】:

  • 我会试试这个。但是我不能改变目录的结构,这不是个人项目:'(
  • 谢谢它现在正在工作!我在 php 命名空间中拥有丰富的知识,我将进一步了解它
  • 嗨@azat,你把这个文件放在哪里——在Acme/DefaultBundle/Extension
  • 这里是 MyApp/Bundle/WebsiteBundle/Extension
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
相关资源
最近更新 更多