Comments 16
В бихэйвор бы все это ;)
или просто так
как-то так
class SiteController extends Controller
{
public $package = array(
'basePath' => 'application.views.site.assets';
'css' => array('index.css'),
'js' => array('index.js'),
'depends' => array('jquery'),
);
public function init()
{
$this->package['baseUrl'] = Yii::app()->assetManager->publish($this->package['basePath']);
Yii::app()->clientScript->addPackage('site')->registerPackage('site');
}
public function getAssetUrl()
{
return $this->package['baseUrl'];
}
}
как-то так
Это разные вещи. Вы предлагаете публиковать пакпейдж. Мой вариант предполагает зависимость ресурсов от файла вида.
А что бывают такие задачи, когда для каждого представления нужно публиковать отдельные ресурсы? С группировать их в ресурсы для контроллера нельзя?
А что бывают такие задачи, когда для каждого представления нужно публиковать отдельные ресурсы?
Да, css и js обычно используются для конкретного HTML.
Это понятно. Я просил, есть ли смысл публиковать их по отдельности?
Есть смысл их автоматически загружать через clientScript для конкретного представления. Исходя из этого уже и идёт логика публикации.
Что мешает опубликовать всю пачку и имея $assetUrl, регистрировать через clientScirpt?
Можно хоть весь проект публиковать. Только зачем? в чем преимущество?
Преимущество в том что твой код сводится к 10 строчкам в одном месте.
ИМХО, поддерживать код будет легче, особенно со стороны и через некоторое время.
Следить за каждым файлом, для каждого вида это же застрелится легче. Разве не удобнее держать ресурсы для каждого контроллера в одной папке и публиковать ее сразу.
Дело личных предпочтений конечно, но я думаю ты усложняешь себе и другим кто будет поддерживать твой код жизнь.
ИМХО, поддерживать код будет легче, особенно со стороны и через некоторое время.
Следить за каждым файлом, для каждого вида это же застрелится легче. Разве не удобнее держать ресурсы для каждого контроллера в одной папке и публиковать ее сразу.
Дело личных предпочтений конечно, но я думаю ты усложняешь себе и другим кто будет поддерживать твой код жизнь.
Смысл моего метода сводится к тому, что зная только псеводо путь представления можно получить ссылку на любой опубликованный ресурс. Т.е. вполне возможно, что может понадобиться подключить представление стороннего модуля или получить какой нибудь отдельный ресурс.
Например, таким образом
мы можем получить ссылку на css файл из модуля «default», контроллера «default», вида «index».
А нужно ли это вам, это у же вам решать. Я ни к чему не обязываю, просто описал способ который мы используем.
Например, таким образом
$this->getCssUrl('application.modules.default.views.default.index', 'index.css')
мы можем получить ссылку на css файл из модуля «default», контроллера «default», вида «index».
А нужно ли это вам, это у же вам решать. Я ни к чему не обязываю, просто описал способ который мы используем.
Да возможно у вас острая необходимость именно в такой реализации, я тоже описываю альтернативные решения и выявляю тонкие места в вашем.
Учитывая что у контроллера и особенно у модуля есть возможность менять viewPath, то работать с ресурсами по конкретным псевдонимам может привести к неожиданному результату.
Учитывая что у контроллера и особенно у модуля есть возможность менять viewPath, то работать с ресурсами по конкретным псевдонимам может привести к неожиданному результату.
А в чем профит?
А мне нравится идея, подключать нужные css/js в layout'ах и в представлениях. В layout'ах общие, а в представлениях, те которые нужны только этому представлению.
Sign up to leave a comment.
Автоматическое подключение css и js файлов в Yii