2013-11-25 5 views
1

Я не очень знаком с twig, я пытаюсь получить расширение изображения, но я не уверен, как это сделать в twig, в php очень легко использовать строковые функции, такие как substr и indexof, или с помощью следующее: ext = pathinfo ('/ testdir/dir2/image.gif', PATHINFO_EXTENSION), я не хочу кодировать его в контроллере и передавать его в twig как параметр, вместо этого я хочу извлечь его непосредственно в макете ветви , так как же вы собираетесь это делать?Получение расширения изображения в Twig Symfony2

ответ

0

Вы можете создать Twig extension, который будет содержать

пространства имен YourApp \ AcmeBundle \ Twig;

class MyTwigExtension extends \Twig_Extension 
{ 

public function getFilters(){ 
    return array(
     new \Twig_SimpleFilter('ext', array($this, 'ext')), 
    ); 
} 

public function ext($filepath){ 
    $ext = pathinfo($filepath, PATHINFO_EXTENSION); 
    return $ext; 
} 

} 
+0

как biginner я буду избежать этого решения, потому что, если я должен работать с расширением веточки, то я должен знать, как работать с потому что расширения не лениво загружаются. как я читал в статье, которую вы мне дали, спасибо, по крайней мере, у меня есть идея об этом :) – ZeSoft

0

В прутьях используйте разделительный фильтр. см. http://twig.sensiolabs.org/doc/filters/split.html

Вы также можете просто получить расширение в контроллере и передать его на веточку.

+0

благодаря этим работало для меня – ZeSoft

1

Один из подходов состоит в использовании фильтра Twig's slice.

Например, если путь к файлу изображения является imgSrc, то imgSrc|slice(-4) даст вам последние 4 символа имени файла (например. .gif, .jpg, jpeg).

9

Вы можете получить расширение файла, таким образом

{{ "filename.txt"|split('.')|last }} 
Смежные вопросы