Какое место для регистрации CssFile в Yii? - PullRequest
4 голосов
/ 14 декабря 2011

Я новичок в Yii.

Правильно ли делать вызов registerCssFile внутри действия контроллера?

Мое мнение, что правильное место для этого - внутренние представления

Например, я создаю некоторый кусок пользовательского меню и включаю его в некоторые моих представлений.Я получил отдельный файл CSS для пользовательского меню, и я не хочу заботиться о включении этого user_menu.css в каждое действие или контроллер, представление которого использует это пользовательское меню.Поэтому я использую этот код в представлении parts/user_menu.php:

<?php
    Yii::app()->getClientScript()->registerCssFile(yii::app()->request->baseUrl.'/css/user_menu.css', 'screen');
?>
<ul class="user-menu">
...here comes menu

Правильно ли, или вместо этого я должен включить этот файл CSS в каждое действие или контроллер?

Может быть, есть некоторые руководства по стилю по этому поводу?Любые ссылки приветствуются ...

Ответы [ 2 ]

6 голосов
/ 14 декабря 2011

Я не могу говорить за "официальное" правильное место, но у меня есть собственный базовый контроллер, который расширяют все мои контроллеры. Я размещаю свои глобальные registerCssFile() вызовы в методе init() этого базового контроллера, чтобы они автоматически регистрировались на всем сайте.

Если вы многократно используете файлы частичного просмотра, я вижу регистрацию CSS в представлении, которое я предполагаю , но ...

Вероятно, имеет смысл просто включить весь CSS для всего сайта в метод контроллера init(), а затем объединить и сжать его, используя расширения, подобные этим .

(Если только в одном представлении нет МНОГО пользовательского CSS, который, возможно, не используется нигде на сайте).

РЕДАКТИРОВАТЬ: Как упомянуто ниже briiC.lv, использование themes означает, что вы захотите сохранить весь CSS в ваших файлах вида / макета отдельно от кода контроллера.

1 голос
/ 25 октября 2013

Прежде всего, на вашем месте я бы полностью забыл о registerCssFile и всегда использовал только registerPackage. Таким образом, вы можете поменять всю стилистику везде, меняя одну строку в одном четко определенном месте.

Два варианта:

  1. Вы создаете базовый класс для классов вашего контроллера и помещаете все операторы register в beforeRender. Таким образом, вам понадобится отдельный класс контроллера для каждого раздела на сайте, который требует разного стиля.

  2. Вы используете модули. Затем вы идете и делаете вызовы register в вызове init класса модуля.

Не помещать registerCss звонки в представлениях никогда . Это будет иметь неприятные последствия для вас очень быстро. Неважно, маленький у вас сайт или большой.

Лично я предпочитаю всегда использовать beforeRender, поскольку это означает, что ресурсы будут обрабатываться только для ваших "страниц", то есть для респондеров маршрутов, которые, как мы надеемся, представят что-то похожее на HTML для клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...