#php #twig #symfony
#php #twig #symfony
Вопрос:
я добавил этот код в service.yml
//app/config/services.yml
services:
TwigEkler:
class: MainBundleTwigTwigEkler
tags:
- { name: TwigEkler }
и создал этот файл
//src/MainBundle/Twig/TwigEkler.php
<?
namespace MainBundleTwig;
class TwigEkler extends Twig_Extension
{
public function getFunctions()
{
return array(
new Twig_SimpleFunction('gecis', array($this, 'gecisFunction')),
);
}
public function gecisFunction($param)
{
if ($param == '4') {
return 'FAT';
} else {
return '';
}
}
public function getName()
{
return 'TwigEkler';
}
}?>
и использовал ее в twig
{{ gecis(level) }}
но я получаю эту ошибку
запрос.КРИТИЧЕСКОЕ: неперехваченное исключение PHP Twig_Error_Syntax: «Неизвестная функция «gecis» в «gecis / gecis.html.twig» в строке 24.» в C:wamp64wwwdenemevendortwigtwiglibTwigExpressionParser.php строка 573 {«исключение»:»[объект] (Twig_Error_Syntax(код: 0): неизвестная функция «gecis» в «gecis/gecis.html.twig » в строке 24. в C:wamp64wwwdenemevendortwigtwiglibTwigExpressionParser.php:573 )»}
в чем моя ошибка?
Комментарии:
1. Я думаю, что ваша ошибка используется в объявлении ваших тегов. Попробуйте заменить имя тега на
{ name: twig.extension }
2. из кулинарной книги
3. извините за задержку, но доктрина сводит меня с ума 🙂 @ciurciurek; там изменилось, и ничего не изменилось. но попытка очистить кеш выдает новую ошибку «[Symfony Component Debug Exception ClassNotFoundException] Попытался загрузить класс «TwigEkler» из пространства имен «mainBundle Twig». Вы забыли инструкцию «use» для другого пространства имен? » [в] DarkBee; я прочитал и следую инструкциям, но безуспешно: (
4. я решил через эту страницу amanvarshney. blogspot.com.tr/2011/12 /…
5. @MC_delta_T так что же было не так? Вы должны опубликовать это как ответ, чтобы ваш вопрос не казался нерешенным.
Ответ №1:
you need to follow
create a directory in your AppBundle " Extensions "
and create a file " TwigExtensions.php "
In that file you need to define:
namespace AppBundleExtensions;
use SymfonyBridgeDoctrineRegistryInterface;
use AppBundleHelperCommonHelper;
class TwigExtensions extends Twig_Extension
{
public function __construct(RegistryInterface $doctrine){
$this->doctrine = $doctrine;
}
}
Use
public function getFunctions(){
//Define your function that you
}
}
Than create the function that you have define in " getFunctions".
Now you can use that function on twig.