Idéias para organizar seus CSS e auto-carregá-los no CakePHP
Bom pessoal, neste post, vou passar algumas idéias que tive no que diz respeito a organização dos arquivos CSS de um projeto desenvolvido no Cake. Tem algumas idéias bem pensadas e umas "meio porcas" também...
Primeira idéia: arquivos CSS's sem vínculo com os nomes dos controllers.
Neste modo, os arquivos seguem uma nomenclatura totalmente diferente da dos controllers. O que não é recomendado, senão você vai perder muito tempo dizendo: "Como eu chamei mesmo o CSS da página de leitura de uma notícia?:)".
Para usar esta técnica vamos fazer o controller definir qual CSS ele deseja usar, então vou criar uma variável $CSS que irá armazenar qual arquivo CSS será usado. Então, por exemplo, um controller de notícias:
-
class NoticiasController extends AppController
-
{
-
var $name = 'Noticias';function index(){
-
$this->set("CSS", "indicedenoticias");
-
}
-
function ler($idString){
-
$this->set("CSS", "lernoticia");
-
}
-
-
}
Perceba que setamos uma variável CSS para cada método, e que os nomes dos arquivos (CSS) não tem relação nenhuma com os métodos.
Agora no nosso layout default, dentro da tag head:
No layout, fazemos uma verificação para sabermos se foi setado o $CSS, se sim, mandamos incluir.
Esta é uma maneira porca, ok?
Segunda Idéia: CSS com o mesmo nome do controller
Neste modo, os arquivos CSS seguirão a mesma nomenclatura dos controllers, ou seja, um controller Noticias terá uma arquivo CSS noticias.css. Assim teremos um projeto muito mais organizado, e acharemos facilmente um CSS, pois sabemos que seu nome estará ligado a um controller.
Agora, não precisaremos fazer nada no controller, apenas no layout.
-
?>
Para sabermos qual o nome do controller que chamou o layout, estamos usando a variável $this->params, que entre outras informações bem úteis, armazena o nome do controller ($this->params["controller"]). Se você quiser saber todas as informações armazenadas em params, faça um teste e coloque um:
Simples não? rs
Terceira Idéia: CSS com o mesmo nome do controller, somente se o CSS existir
Este na verdade é um avanço da segunda idéia, apenas verificaremos se o arquivo CSS existe antes de incluí-lo. Coisa que já deveríamos ter feito desde o primeiro método.
Note que para montar o caminho completo até o arquivo usamos várias constantes, veja a lista de significados:
- APP : guarda o caminho completo da aplicação atual. Por exemplo: c:\testeCake\app\
- WEBROOT_DIR : o nome do diretório webroot. Isso porque podemos mudá-lo, mas o padrão é webroot mesmo.
- DS : ou Directory Separator, guarda qual barra será usada. Barra invertida para windows e barra normal para *nix.
Este método já é bem mais organizado, além de fazer as verificações necessárias. Ideal para ser usado se você tiver toda formatação dos dados gerados por um controller em um único arquivo.
Quarta Idéia: um CSS para cada método de um controller
Está idéia, creio ser a mais coerente, organizada e "bonita" de ser usada. Por quê? Pelo simples fato de separarmos os CSS para cada método.
Novamente só iremos alterar o layout:
Neste exemplo, estamos usando a seguinte padronização para os arquivos CSS: nomedocontroller_método.css e já estamos verificando se o CSS existe e só o incluímos se isso acontecer.
Quinta idéia: um CSS para cada método do controller, um pouco mais organizado
Esta idéia é quase idêntica a anterior, mas ao invés de colocarmos todos os CSS no mesmo diretório, teremos um diretório para o controller dentro de webroot/css/ e dentro desse diretório, os arquivos CSS de cada método.
Vejamos o exemplo:
Perceba que só trocamos o "_" (underline) pela barra.
Assim se tenho um controller chamado Noticias e um método chamado ler, será incluído, se existir, o arquivo: /css/noticias/ler.css.
Esta última, eu creio ser a mais bem organizada.
Bom pessoal, é isso. Qualquer dúvida ou sugestão, comentem! Abraços...
2 Comentários »
RSS feed for comments on this post · URI do TrackBack
Este site é escrito por Tulio Faria, analista de sistemas, apaixonado por web, jogos e por qualquer cacareco tecnológico.
Allan said,
Janeiro 29, 2007 @ 23:05
Cara, meu CSS padrão não aparece na tela inicial do cake como no seu tutorial, tem alguma configuração de servidor necessaria pra instalar o cake ? to usando o apache com php5.0
Valeu!
tulio said,
Janeiro 30, 2007 @ 00:13
Fala Allan,
então depende... Aquele estilo padrão ele é mantido enquanto o layout default está sendo usado. Quando cria-se um novo, você deve adicioná-los manualmente.
É esse o problema?
Abraços,