Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 Twig extension

I have some problem to implement twig extension. I need to create my own filter (a substr filter). So I have thought to use twig extension.

I created a folder named "Extension" on MyApp\Bundle\WebsiteBundle\ and file : WebsiteExtension.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';
    }
}

Then on my config.yml on /app/config

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

But error occurs :

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

It's strange because file and class exists ... I have missed something but what ?

like image 215
Kakawait Avatar asked May 13 '11 12:05

Kakawait


People also ask

What is Twig file extension?

File created by Twig, a PHP optimizing template engine; contains a template that will be generated into a specific final format, such as a HTML, JavaScript, XML, or CSS based file; the twig extension determines what engine should be used to create the final format whether it's the Twig or PHP engine.

Can we write PHP code in Twig file?

Symfony defaults to Twig for its template engine, but you can still use plain PHP code if you want.

Is Twig a template engine?

Twig is a modern template engine for PHPSecure: Twig has a sandbox mode to evaluate untrusted template code. This allows Twig to be used as a template language for applications where users may modify the template design.


1 Answers

Replace this

namespace Bundle\WebsiteBundle\Extension;

By this

namespace MyApp\Bundle\WebsiteBundle\Extension;

And for what your need dir Bundle/WebsiteBundle?
Is Bundle is not enough?

Your can see here how I implement this https://github.com/azat/blog/blob/master/src/Blog/WebBundle/Twig/Extension/WebExtension.php

like image 70
azat Avatar answered Oct 26 '22 23:10

azat