Kamil Olszewski

Kamil Olszewski Jones Lang LaSalle

Temat: zaokrąglenia w TWIGu

Wiem, że nie ma dostępnych funkcji ceil czy round (i z tego co wyczytałem na forum nie powinienem się tym przejmować tylko napisac to sobie w controllerze i tylko wyswietlic wynik) ale jednak postanowiłem spróbować.
Znalazłem podpowiedź: http://symfony.com/doc/2.0/cookbook/templating/twig_ex...
i zrobiłem coś takiego:
src/My/UserportalBundle/Twig/MyExtension.php
<?php

namespace My\UserportalBundle\Twig;

class MyExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
'round' => new \Twig_Filter_Method($this, 'round'),
);
}

public function round($number)
{
return round($number);
}

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

src/My/UserportalBundle/Resources/config/services.xml

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="my.twig.my_extension" class="My\UserportalBundle\Twig\MyExtension">
<tag name="twig.extension" />
</service>
</services>
</container>

gdy chce wywołać {{ (7/3)|round }} mam komunikat: The filter "round" does not exist in {} at line 89
Ktoś ma pomysł dlaczego nie widzi tego co napisałem?
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: zaokrąglenia w TWIGu

Kamil O.:
Wiem, że nie ma dostępnych funkcji ceil czy round (i z tego co wyczytałem na forum nie powinienem się tym przejmować tylko napisac to sobie w controllerze i tylko wyswietlic wynik) ale jednak postanowiłem spróbować.
Znalazłem podpowiedź: http://symfony.com/doc/2.0/cookbook/templating/twig_ex...
i zrobiłem coś takiego:
src/My/UserportalBundle/Twig/MyExtension.php
<?php[/quote]> [quote]namespace My\UserportalBundle\Twig;

class MyExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
'round' => new \Twig_Filter_Method($this, 'round'),
);
}

public function round($number)
{
return round($number);
}

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

src/My/UserportalBundle/Resources/config/services.xml

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"[/quote]> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"[quote] xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="my.twig.my_extension" [/quote]> class="My\UserportalBundle\Twig\MyExtension">[quote] <tag name="twig.extension" />
</service>
</services>
</container>

gdy chce wywołać {{ (7/3)|round }} mam komunikat: The filter "round" does not exist in {} at line 89
Ktoś ma pomysł dlaczego nie widzi tego co napisałem?
Zapewne pracujesz na najnowszej wersji frameworka, zaś korzystasz z dokumentacji do wersji 2.0. Zerknij tutaj:
- How to Write a custom Twig Extension

PS. Zwracaj uwagę na komunikat "Caution" na żółtym tle i przełącznik wersji w dokumentacji.
Kamil Olszewski

Kamil Olszewski Specjalista ds
projektów w firmie
Jones Lang LaSalle

Temat: zaokrąglenia w TWIGu

Pracuję na 2.0.10 dlatego chciałem skorzystać właśnie z tej instrukcji. Gdy próbowałem czy sposób z nowszej wersji zadziała wyrzuciło mi: Fatal error: Class 'Twig_SimpleFilter' not found in C:\xampp\htdocs\portal19\src\My\UserportalBundle\Twig\MyExtension.php on line 10
Kamil Olszewski

Kamil Olszewski Specjalista ds
projektów w firmie
Jones Lang LaSalle

Temat: zaokrąglenia w TWIGu

Udało mi się rozwiązać problem- poniżej działający przykład
<?php

namespace My\UserportalBundle\Twig;

class MyExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
'round'=>new \Twig_Filter_Method($this,'round'),
);
}

public function round($number)
{
return round($number,2);
}

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


<services>
<service id="my.twig.my_extension" class="My\UserportalBundle\Twig\MyExtension">
<tag name="twig.extension" />
</service>
</services>

i wywołanie w widoku
{{(Waga/((Wzrost/100)**2))|round}}
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: zaokrąglenia w TWIGu

Kamil O.:
Pracuję na 2.0.10 dlatego chciałem skorzystać właśnie z tej instrukcji. Gdy próbowałem czy sposób z nowszej wersji zadziała wyrzuciło mi: Fatal error: Class 'Twig_SimpleFilter' not found in C:\xampp\htdocs\portal19\src\My\UserportalBundle\Twig\MyExtension.php on line 10
Klasa nie istnieje. Coś namieszałeś korzystając z starej dokumentacji, ale używając nazwy klasy z nowej dokumentacji.
Ciesze się, że problem sam rozwiązałeś. Wyciągnij wnioski i ucz się dalej :]
Łukasz Jurys

Łukasz Jurys Full-stack developer
- Symfony, magento
2, Angular, Swift

Temat: zaokrąglenia w TWIGu

a to nie działa ? http://twig.sensiolabs.org/doc/filters/round.html

Następna dyskusja:

Pomiar, wynik, tolerancja i...




Wyślij zaproszenie do