domingo, 11 de janeiro de 2009

Páginas internas dinâmicas com CakePHP

Bem, andei um pouco afastada do blog por que entrei de férias e comecei a colocar alguns detalhes pessoais em ordem.

Mas o assunto deste post não são as minhas férias. Vamos ao que realmente importa.

Em algum momento do seu aprendizado sobre o CakePHP você se pergunta : "Como faço para criar páginas internas?".

Algumas respostas e sugestões aparecem : "Será que devo criar um controller para cada página interna?".Para esta primeira dedução você logo vai encontrar a resposta. Não, você não precisa criar um controller para cada página. (Easily creating static pages)

Lá na pasta "views" dentro de sua aplicação(app) você vai encontrar um diretório "pages". Todas as páginas internas do seu site ficarão armazenadas ali, ou seja, simples arquivos .CTP. Nada de controllers.

Perfeito. Agora seu site possui páginas internas tais como : "Quem somos", "Contato", etc.

Mas e se em algum momento formos questionados por nossos clientes : "Será que posso alterar o quem somos?". Bem, neste caso nossas páginas internas estão estáticas. Precisamos tornar esse conteúdo dinâmico.

Busquei um pouco na internet uma maneira de resolver essa questão.
Confesso que antes de qualquer coisa fiquei quebrando a cuca tentando resolver sozinha, depois de tentar as saídas que achei possíveis recorri aos resultados do Google. A busca retornou o que estava precisando (Managing simple pages in cakephp).

Com uma simples adaptação do código para a última versão do Cake consegui adotar o CRUD para minhas páginas internas usando o Pages_Controller do próprio Cake sem afetar os demais controllers.

Essa é a dica que tenho para quem precisa dessa adaptação; um ótimo 2009 para todos.

sexta-feira, 26 de dezembro de 2008

CakePHP - Array Functions

Array : Algumas propriedades
Depois de notar o quanto o uso do compact se tornou freqüente nos meus scripts, resolvi listar algumas funções que julguei úteis. Algumas talvez não apresentem um uso agora.
Exemplos em php.net

array_combine
Cria um novo array a partir de dois já existentes. Usando os valores do primeiro como as chaves e os parâmetros do segundo como os valores.
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);

Na tela:
Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)

array_chunk
Divide um array em pequenas partes. Separe os dados como se fossem uma lista ou até mesmo monte calendários.
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));

Na tela ( valores do array resgatados de 2 em 2) :

Array
(
[0] => Array
(
[0] => a
[1] => b
)

[1] => Array
(
[0] => c
[1] => d
)

[2] => Array
(
[0] => e
)

)

array_diff
Retorna os valores de array1 que não constam em um array2.
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

Na tela ( os valores de array1 ) :

Array
(
[1] => blue
)

Agora fico devendo algumas brincadeiras com o Cake. Senão esse post fica sem propósito.

Framework

Framework : eficiente e produtivo.
Enquanto estudava Modelagem, recebia o feedback de um bate-papo sobre a real necessidade do uso de frameworks.

A questão era a seguinte:" Necessito de um framework se faço um bom código?"
Junto a questão veio um comentário : "Levo menos tempo preparando meus estilos do que me preparando para usar um framework css".

Concluímos que pessoas com mais experiência com a linguagem não sentem necessidade do uso de um framework.
Mas é indiscutível as vantagens que o mesmo pode nos oferecer. Não duvido que um bom programador munido de um bom framework não se torne um indivíduo muito mais produtivo e que a qualidade de seu serviço seja muito maior do que qualquer outro que use o mesmo framework mas possua conhecimentos básicos em programação.

Também devemos entender que o propósito do framework é nos tornar eficientes e produtivos, aumentando a qualidade do nosso serviço e nos dispondo de mais tempo para nos concentrar na abstração dos problemas e no trato das soluções.

Bom código necessita de um framework?

Analise quando realmente é necessário o uso do framework.
Existem diversos tipos de frameworks para várias linguagens..até para CSS. Analise se precisa de um.
Hoje não vivo sem o CakePHP, até para os projetos mais simples.

Meu propósito não é facilitar o aprendizado em relação a linguagem, e sim manter a estrutura do meu sistema o mais sólida possível.

A importância de conhecer a linguagem


Framework é bom mas não dispenso a linguagem em seu estado mais "puro".
A importância de saber bem com o que se trabalha é o fator que nos diferencia entre bons e ótimos profissionais.

domingo, 21 de dezembro de 2008

CakePHP - Ajax, Render, Upload, unlink, Sortable

Final de ano. Férias na faculdade. Evento em São Paulo.
Este final de semana em frente ao computador tirando o atraso com o CakePHP.
De sábado para domingo estudando das 7 da manhã às 5 da manhã de domingo.
Lendo, relendo, revisando. Fazendo, desfazendo. Experimentar e conhecer.
Comprometi-me a sempre fazer um apanhado das realizações para que a caminhada não fosse perdida em função da abstração.

Tudo começou quando resolvi definir logo meus grupos de usuários.
Tentei entender se era preciso usar o admin route. Após ler o manual, alguns fóruns e tentar usar um pouco a lógica resolvi criar views separados para meu painel de controle.
Mas aí me indaguei sobre como criar um menu dinâmico para cada grupo de usuário.
Seria necessário definir o menu de acordo com o grupo de usuários?
Bastaria deixar a ação disponível no menu para todos os grupos?
Depois de pensar muito percebi que estava investindo muito tempo nisso e ainda tinha uma caminha pela frente.

Deixei o componente Auth de lado por enquanto.
Dediquei o tempo no CRUD de uma das minha tabelas.
Testei cada função em ajax, revisei o livro. Fui em cada fórum, vi cada questão.

Em relação ao Ajax concluí o seguinte:
É melhor não tentar fazer uploads de arquivos.

Com ajax aponto para uma ação do controller, nessa ação uso o render para passar os parâmetros para uma determinada página CTP do meu controller, essa página por sua vez é carregada no elemento setado no ajax.

quinta-feira, 18 de dezembro de 2008

Algumas URLs

http://kiss.souagil.com.br/2008/11/sistemas-de-temas-do-cakephp/

http://planetcakephp.org/

http://docs.cakephp.nu/

domingo, 23 de novembro de 2008

sábado, 15 de novembro de 2008

21 coisas que precisamos saber de cor sobre o cakephp

http://www.avatarfinancial.com/pages/cake/