Это на самом деле довольно легко (и мощно), и может быть сделано без помощи CakePHP.
Сначала создайте новый файл в вашем корне с именем css.php
.Вверху этого файла поместите следующее:
<?php header("Content-Type: text/css"); ?>
Теперь создайте ссылку на этот файл в заголовке макета, как обычный файл CSS.
<link rel="stylesheet" href="/path/css.php" type="text/css" />
И вот, у вас есть динамический файл CSS.Вы можете передать ему информацию следующим образом:
<link rel="stylesheet" href="/path/css.php?c=red&fw=700" type="text/css" />
УТОЧНЕНИЕ: Чтобы получить доступ к переменным, указанным выше, вы должны использовать переменную $_GET
в файле CSS.Посмотрите на ссылку выше тега.Чтобы получить доступ к этим переменным в файле css, вы должны сделать что-то вроде этого:
.class {color:<?php echo $_GET['c']; ?>;font-weight:<?php echo $_GET['fw']; ?>;}
ОБНОВЛЕНИЕ: После просмотра ссылки, которую вы разместили о CakePHP HTML Helper, я понял, что естьлучший способ сделать это, если вы собираетесь передать много переменных в файл css.
Создать новую модель и контроллер с именами DynamicStyle и DynamicStylesController (или что-то подобное).Затем создайте новый файл макета css.ctp, который будут использовать все представления этого контроллера.Объявите оператор заголовка типа содержимого в этом файле макета.
Последним шагом будет ссылка на метод в этом контроллере из заголовка стандартного заголовка макета.
Теперь вы можете сделатьтаблицу базы данных правил css и используйте их с помощником HTML в представлении css.