Bonsoir,
Je début de manière générale dans les framworks et j'ai une question concernant les css dans cakePhp.

En lisant la documentation et en regardant les vidéos de grakikart, j'ai compris qu'il fallait utiliser les layouts pour donner une structure identique à chaque page.
Moi ce que j'aimerais faire, c'est (par ex) de changer le css de la page A propos par rapport à la page home. Donc de garder la même structure html, mais des couleurs différentes.

Dois-je obligatoirement faire un layout identique pointant vers un css différent ?

Merci.

6 réponses


Flohw
Réponse acceptée

sinon y'a une autre astuce (mais c'est un peu moche je trouves...
dans ton layout :

if (isset($uneVarQuelconqueUtiliseeAUnSeulEndroit))
    echo $this->Html->css('toncss.css');
// ou
if (isset($this->taVarUnique)
    echo $this->Html->css('toncss.css');

et dans ton action où y'a besoin du css

$this->set('uneVarQuelconqueUtiliseeAUnSeulEndroit', 'uneValeurQuelconque');
// ou dans la vue où y'a besoin du css
$this->taVarUnique = 'ta valeur quelconque';

ca ca devrait marcher aussi, c'est un peu moche je trouves mais c'est valide et y'a pas besoin d'un autre layout complet quasi identique ;)

Daywalker_mso
Auteur
Réponse acceptée

Bonjour à tous,
Je réouvre ce topic qui date pas mal, mais j'ai finalement trouvé la solution à mon problème.

echo $this->Html->css('bootstrap-wysihtml5.css','stylesheet',array('inline' => false ) );

Tout est dans les paramètres.
Il suffit de définir un array avec la cléf "inline" à false. Ainsi, le css ne sera ajouté entre les balises head que lorsque la vue correspondante sera chargée.
En espérant que cela aidera quelqu'un.

Normalement tu dois pouvoir importer un CSS depuis ta vue tout comme tu peux apporter du javascript... Je ne connais pas la méthode exacte mais c'est certainement possible ;)
Regarde du côté des helper HTML !!!

bon dans ce cas là c'est echo $this->Html->css('fichier.css'); mais c'est pas tres valide xHTLM ca une balise <link> dans le <body> :-°

Merci flohw pour ta réponse. Ta technique fonctionne, mais n'est comme tu le dis pas valide.
J'ai fouillé également de mon coté et il semblerait que je n'ai pas d'autre choix que de créer un nouveau layout à chaque changement. Ou faire une croix sur la validité ^^

Si c'est le prix à payer pour éviter de créer un layout quasi identique à chaque fois, je pense que ce n'est pas bien cher payé.
Merci pour ton astuce flohw.