Codeigniter + Twig + Composer : Uma boa idéia

Olá a todos.

Em um projeto tive a necessidade de utilizar alguns recursos de um template engine e olhando alguns achei interessante trabalhar com o twig (http://twig.sensiolabs.org/).

Twig Template engine

Twig Template engine

Já existe uma biblioteca no Codeigniter para trabalhar com o Twig, o Codeigniter Twig (https://github.com/altrano/codeigniter-twig) que é de fácil acoplamento, basta fazer o download dos arquivos, inseri-los na aplicação e carregar no controller que vá usá-lo. Ele faz o processo de carregamento automático dos helpers inseridos no arquivo de autoload da aplicação.

application/libraries/Twig.php
Link do gist  : https://gist.github.com/4550897

application/config/twig.php
Link do gist : https://gist.github.com/4550897
Baixado os arquivos do projeto Codeigniter Twig no github e inseridos no projeto, vamos começar a integração Primeiro vamos inserir o composer na aplicação. Iremos criar a requisição do Twig no arquivos composer.json. Crie um arquivo composer.json na raíz do projeto com as informações:

composer.json
Link do gist : https://gist.github.com/4550979

Depois iremos inserir o código que vai chamar o arquivo de carregamento dos pacotes do composer no arquivo index.php na raíz do projeto.

No arquivo autoload.php (application/config/autoload.php) modifique o conteúdo do arquivo da linha 55 à 67 e insira a informação abaixo:

application/config/autoload.php
Link do gist : https://gist.github.com/4551017

O código do controller da aplicação:

application/controllers/welcome.php
Link do gist: https://gist.github.com/4550963

Agora os templates. O Twig tem algumas funções nativas que podem ser muito úteis. Criaremos 2 arquivos na pasta “application/views”:
  • template.html.twig – Template padrão da aplicação
  • index.html.twig – Arquivo com o conteúdo específico da página;
Como ficou o código das views:
template.html.twig
application/views/template.html.twig
index.html.twig

application/views/index.html.twig
Link do gist : https://gist.github.com/4551017

Agora uma observação:
Quando for utilizar algum helper que gere html (form_helper, por exemplo), utilize o método com o sufixo |raw
 Chamada da função form_open(); do helper
     {{ form_open("/login")|raw }}
ao invés de
     form_open("/login");
Link do Gist com o código dos arquivos utilizados no projeto:
Documentação do Twig:
Valeu e até mais!
Anúncios

Open source: criação do tema “twitter bootstrap” no Grocery CRUD

Olá pessoal.

A quem utiliza o scaffolding Grocery CRUD (http://www.grocerycrud.com/) nos projetos com o Codeigniter fiz uma colaboração no projeto criando um novo tema para ele com base no Twitter bootstrap (http://twitter.github.com/bootstrap/) pelo fato da grande absorção dele em grandes projetos e de todas as suas facilidades para interações, UX e outros aspectos.

Github do projeto

Github do projeto

Para quem quiser testar e/ou utilizá-lo em suas aplicações para verificar o seu uso, o projeto mais atual com o tema pode ser encontrado no repositório do próprio projeto no Github (https://github.com/scoumbourdis/grocery-crud).

Fica aqui a minha satisfação de poder participar do projeto e poder contribuir ao projeto do John Skoumbourdis (https://github.com/scoumbourdis) . Agradeço também ao John por me inserir na listagem dos colaboradores do projeto na página do projeto no link http://www.grocerycrud.com/documentation/credits!

Créditos no projeto Grocery CRUD

Créditos no projeto Grocery CRUD

Espero que vocês gostem do resultado, ainda estou aprimorando-o, então toda sugestão e crítica é sempre bem-vinda e acima de tudo todos podem colaborar na melhora do projeto!

Pretendo participar do novo projeto do grocery CRUD 2.0 que deve focar alguns outros aspectos como interoperabilidade atendendo a alguns PSR’s como o PSR-0 e o PSR-1, testes unitários, melhoras de performance, dentre outros para que possa ser utilizado em qualquer projeto PHP!

Obrigado e até mais!

Iniciativa PHP do jeito certo

Olá pessoal

Uma grande jogada para quem está iniciando no mundo PHP é dar uma olhada no site “PHP do jeito certo”.

php do jeito certo

php do jeito certo

Alguns (vários) desenvolvedores PHP se queixam de algunsm exemplos de documentação para estudo, exemplos, etc. Daí surgiu a idéia do site. E o melhor, como o projeto tem um repositório no Github quem estiver interessado pode colaborar com o projeto.

Valeu galera e até mais!

PHP do jeito certo (link): http://br.phptherightway.com/

Tablesorter: configurações e mapeamentos via classes css

Olá pessoal
Ao utilizar o plugin tablesorter, tive alguns problemas com ordenação de valores, datas e outros atributos. Acabei pesquisando e vi que não era o único.
Vi algumas soluções baseadas no plugin Jquery metadata, mas estava querendo evitar este overhead, já que posso trabalhar com configurações de classes a partir do próprio jquery.
Baseado em uma solução proposta no próprio stackoverflow (http://stackoverflow.com/questions/5672993/how-to-ignore-th-with-specific-class-name-in-tablesorter), acabei criando uma própria com os seletores.
Baixe o arquivo tablesorter no site do projeto
Abra o arquivo jquery.tablesorter.js e modifique:
– A variável “defaults” vai ficar com mais um atributo abaixo da chave debug : false
    debug: false,
noSorterClass: 'no-sorter'
– O método “checkHeaderMetadata” agora irá utilizar o valor da classe configurada para não inserir a coluna como “sortable”
function checkHeaderMetadata(cell, noSorterClass) {
if ((($.metadata) && ($(cell).metadata().sorter === false)) || $(cell).hasClass(noSorterClass)) {
return true;
};
return false;
}
E agora iremo modificar o método que utiliza o checkHeaderMetadata para que envie o valor da classe configurada. O método que o utiliza é o buildHeaders:
modifique o conteúdo
if (checkHeaderMetadata(this) || checkHeaderOptions(table, index)) this.sortDisabled = true;
por este

if (checkHeaderMetadata(this, table.config.noSorterClass) || checkHeaderOptions(table, index))    this.sortDisabled = true;
Agora em um arquivo javascript insira as configurações do tablesorter. Utilizei as configurações padrão do próprio plugin Tablesorter, então só vamos inserir o seguinte código:

$(function() {
function setupTablesorter() {

$.tablesorter.addParser({
id: "money",
is: function(s) {
return true;
},
format: function(s) {
return $.tablesorter.formatFloat(s.replace(/ /, '').replace('R$', '').replace(/\./, '').replace(/\,/, '.').replace(new RegExp(/[^0-9,]/g),""));
},
type: "numeric"
});


var classHeaders = {
'text': '.sorter-text',
'digit': '.sorter-digit',
'currency': '.sorter-currency',
'ipAddress': '.sorter-ipAddress',
'url': '.sorter-url',
'isoDate': '.sorter-isoDate',
'usLongDate': '.sorter-usLongDate',
'shortDate': '.sorter-shortDate',
'time': '.sorter-time',
'metadata': '.sorter-metadata',
'digit': '.sorter-digit',
'money': '.sorter-money',
};
        var tableHeaders = '', separator;
        $('.tablesorter').each(function (i, e) {
            var self = $(this);
$.each(classHeaders, function(key, value){
self.find(key).each(function (pos) {
                    if(separator == undefined)
separator = ',';
                    tableHeaders += separator +' '+ $(this).index()+' : { sorter: "'+key+'"}';
});
});
            $(this).tablesorter({ widgets: ['zebra'], dateFormat: 'uk', noSorterClass: 'no-sorter', headers: tableHeaders });
});
}
    if($('.tablesorter')[0])
setupTablesorter();
});
E agora é cria a tabela e inserir a classe “tablesorter” e as classes referentes a cada configuração em suas respectivas tags “th” e pronto! Está feito!Os arquivos estão disponíveis no meu Github para quem quiser porpôr melhores soluções. e farei um gist com eles.
Obrigado a todos e até mais!

Configurando o plugin PHPDocumentor do Sublime text 2 em ambiente Windows

Olá pessoal

Uma dica simples para configurar o PHPDocumentor no Sublime Text 2:

1. Instalando o PHPDocumentor

– Baixe o projeto via PYRUS/PEAR

PYRUS

php pyrus.phar install pear/PhpDocumentor

PEAR

pear install phpdoc/phpDocumentor-alpha

– Baixe o projeto via git

git clone https://raw.github.com/phpDocumentor/phpDocumentor2/develop/installer.php

– Baixe o projeto via composer

No arquivo composer.json insira

"require": "phpdocumentor/phpdocumentor": "dev-develop"

2. Acesse o arquivo install.php

php installer.php

3. Vá no Sublime Text 2 > Preferences > Packages Settings >phpDocumentor > Settings - User e insira o código

"executable_path": "php pasta-onde-está-o-php-documentor\bin\\phpdoc.php"

4. Faça o teste! Com o plugin “SideBarEnhancements” instalado, clique na pasta do projeto no sublime text com o botão direito  e escolha a opção phpDocumentor > Generate Documentation e pronto! Código de documentação gerada!

Espero ter ajudado.