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 ?
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.
Symfony defaults to Twig for its template engine, but you can still use plain PHP code if you want.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With