Yii2 appasset не работает

Почему в yii2 не работают стили?

У меня не получается подключить стили к сайту
main.php

В чем может быть дело, вроде бы все также делаю по документации

  • Вопрос задан более трёх лет назад
  • 1896 просмотров

А можно для начинающих. То есть debug это же F12 консоль?
Если да, то там ничего

прописываю пути, на сайте к ним прибавляется

Historian111, я бы попробовал добавить ещё один .htaccess в корень проекта и настроить параметр ‘request’ => ‘baseUrl’ в конфигурации.

Источник

Ресурсы

Ресурс в Yii это файл который может быть задан в Web странице. Это может быть CSS файл, JavaScript файл, изображение или видео файл и т.д. Ресурсы располагаются в Web доступных директориях и обслуживаются непосредственно Web серверами.

Желательно, управлять ресурсами программно. Например, при использовании виджета yii\jui\DatePicker в странице, автоматически включаются необходимые CSS и JavaScript файлы, вместо того чтобы просить Вас вручную найти эти файлы и включить их. И когда Вы обновляете виджет до новой версии, будут автоматически использованы новые версии файлов-ресурсов. В этом руководстве будет описана мощная возможность управления ресурсами представленная в Yii.

Комплекты ресурсов #

Yii управляет ресурсами как единицей комплекта ресурсов. Комплект ресурсов — это простой набор ресурсов расположенных в директории. Когда Вы регистрируете комплект ресурсов в представлении, в отображаемой Web странице включается набор CSS и JavaScript файлов.

Задание Комплекта Ресурсов #

Комплект ресурсов определяется как PHP класс расширяющийся от yii\web\AssetBundle. Имя комплекта соответствует полному имени PHP класса (без ведущей обратной косой черты — backslash «\»). Класс комплекта ресурсов должен быть в состоянии возможности автозагрузки. При задании комплекта ресурсов обычно указывается где ресурсы находятся, какие CSS и JavaScript файлы содержит комплект, и как комплект зависит от других комплектов.

Следующий код задаёт основной комплект ресурсов используемый в шаблоне базового приложения:

В коде выше класс AppAsset указывает, что файлы ресурса находятся в директории @webroot , которой соответствует URL @web ; комплект содержит единственный CSS файл css/site.css и не содержит JavaScript файлов; комплект зависит от двух других комплектов: yii\web\YiiAsset и yii\bootstrap\BootstrapAsset. Более детальное объяснение о свойствах yii\web\AssetBundle может быть найдено ниже:

  • sourcePath: задаёт корневую директорию содержащую файлы ресурса в этом комплекте. Это свойство должно быть установлено если корневая директория не доступна из Web. В противном случае, Вы должны установить basePath свойство и baseUrl свойство вместо текущего. Здесь могут быть использованы псевдонимы путей.
  • basePath: задаёт Web доступную директорию, которая содержит файлы ресурсов текущего комплекта. Когда Вы задаёте свойство sourcePath(#asset-manager) опубликует ресурсы текущего комплекта в Web доступную директорию и перезапишет соответственно данное свойство. Вы должны задать данное свойство если Ваши файлы ресурсов уже в Web доступной директории и не нужно опубликовывать ресурсы. Здесь могут быть использованы псевдонимы путей.
  • baseUrl: задаёт URL соответствующий директории basePath. Также как и для basePath, если Вы задаёте свойство sourcePath(#asset-manager) опубликует ресурсы и перезапишет это свойство соответственно. Здесь могут быть использованы псевдонимы путей.
  • js: массив, перечисляющий JavaScript файлы, содержащиеся в данном комплекте. Заметьте, что только прямая косая черта (forward slash — «/») может быть использована, как разделитель директорий. Каждый JavaScript файл может быть задан в одном из следующих форматов:
    • относительный путь, представленный локальным JavaScript файлом (например js/main.js ). Актуальный путь файла может быть определён путём добавления yii\web\AssetManager::basePath к относительному пути, и актуальный URL файла может быть определён путём добавления yii\web\AssetManager::baseUrl к относительному пути.
    • абсолютный URL, представленный внешним JavaScript файлом. Например, http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js или //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js .
  • css: массив, перечисляющий CSS файлы, содержащиеся в данном комплекте. Формат этого массива такой же, как и у js.
  • depends: массив, перечисляющий имена комплектов ресурсов, от которых зависит данный комплект.
  • jsOptions: задаёт параметры, которые будут относится к методу yii\web\View::registerJsFile(), когда он вызывается для регистрации каждого JavaScript файла данного комплекта.
  • cssOptions: задаёт параметры, которые будут приняты методом yii\web\View::registerCssFile(), когда он вызывается для регистрации каждого CSS файла данного комплекта.
  • publishOptions: задаёт параметры, которые будут приняты методом yii\web\AssetManager::publish(), когда метод будет вызван, опубликуются исходные файлы ресурсов в Web директории. Этот параметр используется только в том случае, если задаётся свойство sourcePath.

Расположение ресурсов #

Ресурсы, в зависимости от их расположения, могут быть классифицированы как:

  • исходные ресурсы: файлы ресурсов, расположенные вместе с исходным кодом PHP, которые не могут быть непосредственно доступны через Web. Для того, чтобы использовать исходные ресурсы на странице, они должны быть скопированы в Web директорию и превратиться в так называемые опубликованные ресурсы. Этот процесс называется публикацией ресурсов, который более подробно описан ниже
  • опубликованные ресурсы: файлы ресурсов, расположенные в Web директории и, таким образом, могут быть напрямую доступны через Web.
  • внешние ресурсы: файлы ресурсов, расположенные на другом Web сервере, отличного от веб-хостинга вашего приложения.

При определении класса комплекта ресурсов, если Вы задаёте свойство sourcePath, это означает, что любые перечисленные ресурсы, используя относительные пути, будут рассматриваться как исходные ресурсы. Если Вы не задаёте данное свойство, это означает, что эти ресурсы — это опубликованные ресурсы (в этом случае Вам следует указать basePath и baseUrl, чтобы дать знать Yii где ресурсы располагаются).

Рекомендуется размещать ресурсы, принадлежащие приложению, в Web директорию, для того, чтобы избежать не нужного процесса публикации ресурсов. Вот почему AppAsset в предыдущем примере задаёт basePath вместо sourcePath.

Для расширений, в связи с тем, что их ресурсы располагаются вместе с их исходным кодом в директориях, которые не являются веб-доступными, необходимо указать свойство sourcePath при задании класса комплекта ресурсов для них.

Note: Не используйте @webroot/assets как source path. Эта директория по умолчанию используется менеджером ресурсов asset manager для сохранения файлов ресурсов, опубликованных из их исходного месторасположения. Любое содержимое этой директории расценивается как временное и может быть удалено.

Зависимости ресурсов #

Когда Вы включаете несколько CSS или JavaScript файлов в Web страницу, они должны следовать в определенном порядке, чтобы избежать переопределения при выдаче. Например, если Вы используете виджет jQuery UI в Web странице, вы должны убедиться, что jQuery JavaScript файл был включен до jQuery UI JavaScript файла. Мы называем такой порядок зависимостью между ресурсами.

Зависимости ресурсов в основном указываются через свойство yii\web\AssetBundle::depends. Например в AppAsset , комплект ресурсов зависит от двух других комплектов ресурсов: yii\web\YiiAsset и yii\bootstrap\BootstrapAsset, что обозначает, что CSS и JavaScript файлы AppAsset будут включены после файлов этих двух комплектов зависимостей.

Зависимости ресурсов являются также зависимыми. Это значит, что если комплект А зависит от В, который зависит от С, то А тоже зависит от С.

Параметры ресурсов #

Вы можете задать свойства cssOptions и jsOptions, чтобы настроить путь для включения CSS и JavaScript файлов в страницу. Значения этих свойств будут приняты методами yii\web\View::registerCssFile() и yii\web\View::registerJsFile() соответственно, когда они (методы) вызываются представлением происходит включение CSS и JavaScript файлов.

Note: Параметры, заданные в комплекте класса применяются для каждого CSS/JavaScript-файла в комплекте. Если Вы хотите использовать различные параметры для разных файлов, Вы должны создать раздельные комплекты ресурсов, и использовать одну установку параметров для каждого комплекта.

Например, условно включим CSS файл для браузера IE9 или ниже. Для этого Вы можете использовать следующий параметр:

Это вызовет CSS файл из комплекта, который будет включен в страницу, используя следующие HTML теги:

Для того чтобы обернуть созданную CSS ссылку в тег , Вы можете настроить cssOptions следующим образом:

Для включения JavaScript файла в head раздел страницы (по умолчанию, JavaScript файлы включаются в конец раздела body) используйте следующий параметр:

По умолчанию, когда комплект ресурсов публикуется, всё содержимое в заданной директории yii\web\AssetBundle::sourcePath будет опубликовано. Вы можете настроить это поведение, сконфигурировав свойство publishOptions. Например, опубликовать одну или несколько поддиректорий yii\web\AssetBundle::sourcePath в классе комплекта ресурсов Вы можете в следующим образом:

Более сложную логику можно реализовать с помощью переопределения init() . Ниже указан пример публикации поддиректорий этим способом:

В выше указанном примере определён комплект ресурсов для пакета «fontawesome». Задан параметр публикации beforeCopy , здесь только fonts и css поддиректории будут опубликованы.

Установка ресурсов Bower и NPM #

Большинство JavaScript/CSS пакетов управляются Bower и/или NPM. В мире PHP мы испольуем Composer для управления зависимостями, но он не позволяет устанавливать пакеты Bower и NPM, просто указывая их в composer.json .

Чтобы получить такую возможность, нужно немного настроить Composer. Существует два варианта:

Используя репозиторий asset-packagist #

Этот способ удовлетворяет потребности большинства проектов, которым нужны Bower или NPM пакеты.

Note: Начиная с версии 2.0.13, Basic и Advanced шаблоны приложений уже сконфигурированы для использования asset-packagist, так что этот раздел можно пропустить.

В файле composer.json вашего проекта, добавьте следующие строки:

Посетите asset-packagist.org чтобы узнать, как это работает.

Используя fxp/composer-asset-plugin #

По сравнению с asset-packagist, composer-asset-plugin не требует изменять конфигурацию приложения. Вместо этого, требуется установить специальный глобальный пакет Composer, выполнив следующую команду:

Эта команда устанавливает composer asset plugin глобально, что позволит устанавливать зависимости из Bower и NPM. После установки все проекты на вашем комьютере будут поддерживать установку Bower и NPM пакетов, описанных в composer.json .

Добавьте следующие строки в composer.json вашего проекта, чтобы указать директории, в которые будут установлены необходимые Bower и NPM пакеты:

Note: fxp/composer-asset-plugin выполняет команду composer update существенно дольше, по сравнению с asset-packagist.

После настройки Composer для поддержки Bower и NPM пакетов:

  1. Исправьте файл composer.json Вашего приложения или расширения и включите пакет в список в раздел require . Следует использовать bower-asset/PackageName (для Bower пакетов) или npm-asset/PackageName (для NPM пакетов) для обращения к соответствующей библиотеке.
  2. Выполните composer update
  3. Создайте класс комплекта ресурсов и перечислите JavaScript/CSS файлы, которые Вы планируете использовать в Вашем приложении или расширении. Вы должны задать свойство sourcePath как @bower/PackageName или @npm/PackageName .

Это происходит потому, что Composer устанавливает Bower или NPM пакет в директорию, соответствующую этим псевдонимам.

Note: В некоторых пакетах файлы дистрибутива могут находиться в поддиректории. В этом случае, Вы должны задать поддиректорию как значение sourcePath. Например, yii\web\JqueryAsset использует @bower/jquery/dist вместо @bower/jquery .

Использование Комплекта Ресурсов #

Для использования комплекта ресурсов, зарегистрируйте его в представлении вызвав метод yii\web\AssetBundle::register(). Например, комплект ресурсов в представлении может быть зарегистрирован следующим образом:

Info: Метод yii\web\AssetBundle::register() возвращает объект комплекта ресурсов, содержащий информацию о публикуемых ресурсах, таких как basePath или baseUrl.

Если Вы регистрируете комплект ресурсов в других местах (т.е. не в представлении), Вы должны обеспечить необходимый объект представления. Например, при регистрации комплекта ресурсов в классе widget, Вы можете взять за объект представления $this->view .

Когда комплект ресурсов регистрируется в представлении, Yii регистрирует все зависимые от него комплекты ресурсов. И, если комплект ресурсов расположен в директории не доступной из Web, то он будет опубликован в Web директории. Затем, когда представление отображает страницу, сгенерируются теги
и Зачем реклама?

Источник

Не пойму пространство имен в yii2?

Fatal error: Class ‘frontend\assets\AppAsset’ not found in C:\OpenServer\ultimat\OpenServer\domains\pergrowth\frontend\web\feedback.php on line 13

  • Вопрос задан более трёх лет назад
  • 509 просмотров

И второй вопрос, зачем нужна папка views/site

В документации всё расписано.
А из предыдущего я мало понял.
Какие ссылки?
Как оформлены?
Меняли стандартную структуру приложения?
Что бы не писать кучу вопросов — покажите Ваш код, как Вы подключаете файлы и где они расположены.
В своём примере я показал для приложения basic.
Если у Вас advanced, это Вы обязаны были сразу уточнить, то да, namespace frontend\assets\AppAsset правильно.
Получается, что шаблон приложения у Вас лежит по пути frontend\views\layouts\main.php и в нём надо подключать так
use frontend\assets\AppAsset;

Что бы не писать кучу вопросов — покажите Ваш код, как Вы подключаете файлы и где они расположены.

Источник

Читайте также:  Как лучше настроить роутер huawei
Оцените статью