Adicionando Filtros no Twig

Só para registrar, segue uma forma simples de adicionar filtros no TWIG. Ultimamente tenho trabalhado muito com o Symfony2.

O Symfony 2 vem com o twig, como sistema de templates padrão, gostei dele, é bom de trabalhar, e também é fácil de criar o layout com este sistema de template.
No início me lembrou um pouco de Facelets, outro ótimo sistema de templates, porém achei o twig mais simples e mais funcional, talvez porque cada um está numa linguagem diferente e porque não dizer num paradigma diferente também.

Com o tempo surgiram algumas complicações, como exibir apenas parte do texto, então pesquisei um pouco na internet, agrupei um material e consegui assimilar uma forma simples para adicionar filtros

Abaixo segue o arquivo que deve ser adicionado dentro do diretório Extension que deve estar dentro do diretório do seu bundle.



namespace Acme\AcmeBundle\Extension;

class Text extends \Twig_Extension {

    /**
     * Returns a list of filters.
     *
     * @return array
     */
    public function getFilters() {
        return array(
            'substr' => new \Twig_Filter_Method($this, 'substr'),
            'strtoupper' => new \Twig_Filter_Method($this, 'strtoupper')
                        );
    }

    /**
     * Name of this extension
     *
     * @return string
     */
    public function getName() {
        return 'Text';
    }

    public function strtoupper($string ) {
        return strtoupper((string)$string);
    }

    public function substr($string, $start , $length=null) {
        return substr((string)$string, $start, $length);        
    }

}
Depois disto adicione na Classe DependencyInjection do seu Bundle o seguinte conteúdo, ou altere da forma necessária:
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container) {

        $definition = new Definition('Acme\AcmeBundle\Extension\Text');
        $definition->addTag('twig.extension');
        $container->setDefinition('Text', $definition);

        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $config = new \Doctrine\ORM\Configuration();
        /** CONTINUES */
        $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
        $loader->load('services.xml');
    }
Feito isto é só usar o seu filtro, Este filtro no twig ficaria algo assim:
  {{campoTexto|substr(0,2)}}

Projeto de lei altera o Estatuto da Criança e do Adolescente, proibindo os pais de aplicarem o castigo físico a crianças e adolescentes



A comissão especial da Câmara aprovou na tarde desta quarta-feira (14) proposta encaminhada pelo ex-presidente Luiz Inácio Lula da Silva que proíbe o uso de castigos corporais em crianças e adolescentes. Opositores do projeto - também chamado de "Lei da Palmada" - os evangélicos saíram derrotados da votação. O texto aprovado, que irá direto para o Senado, sem passar pelo plenário da Câmara, estabeleceu o conceito de castigo corporal, um meio termo entre "agressão corporal" e "castigo".


Então agora esta bem claro: castigo corporal é algo entre uma agressão corporal e um castigo.
Obrigado senhores deputados!

Outra mudança feita foi a substituição da palavra "dor" por "sofrimento". Os evangélicos não queriam nem um dos dois termos, por entender que são conceitos subjetivos e impediriam qualquer tipo de punição aplicada pelos pais. O deputado Pastor Marco Feliciano (PSC-SP) chegou a apresentar destaque para excluir a palavra "sofrimento", mas foi derrotado por 12 votos a dois.

Na noite do mesmo dia, descobri que eu sou evangélico.


Desabilitar "verificando alterações externas" do Netbeans

Prezados, muitos já se depararam com problemas de lenntidão no netbeans, e provavelmente perceberam que o processo "verificando alterações externas" está rodando neste momento. Não sei ainda porque isto ocorre, porém para desativar a verificação é muito fácil.

Vá em Ferramentas->Opções->miscelâneas -> arquivos. Desabilite a opção "habilitar a análise automática de código-fonte".
Agora para verificar alterações do código fonte deverá utilizar a opção "verificar alterações externas" no menu "Código Fonte".