Подскажите, можно ли как либо получить список модулей, подключенных в конфиге ?
// Application modules
'modules' => array(
'content',
'admin',
),
как получить этот список?
Подскажите, можно ли как либо получить список модулей, подключенных в конфиге ?
// Application modules
'modules' => array(
'content',
'admin',
),
как получить этот список?
нашел, yii::app()->modules
вопрос, можно както автоматически сгенерировать скриптом заранее просканировав список имеющих модулей, и автоматом получить по yii::app()->modules
я к тому чтобы самому не прописывать массив модулей в ручную ?
Проход по файлам директории protected/modules делается стандартными средствами PHP в два счета
ну пробежаться скриптом не проблема, но вот проблема, если в файле \protected\config\config.php прописываю так
'modules'=>require(dirname(__FILE__).'/modules.php'),
а в этом \protected\config\modules.php прописываю
$dir = YiiBase::getPathOfAlias('application.modules');
$dh = opendir($dir);
$files = array();
while (false !== ($filename = readdir($dh)))
{
if ($filename != '.' && $filename != '..')
{
if (is_dir($dir.'/'.$filename))
{
$files[$filename] = $filename;
}
}
}
return $files;
то ничего не работает, но если прописав в файле \protected\config\modules.php это
return array('auto','news','roles');
тоесть перечислив директории модулей, работает нормально
Получается что динамически нельзя сформировать массив модулей…
$files[$filename] = $filename;
Не уверен, что это должно работать. Попробуйте:
$files[] = $filename;
спасибо, так будет правильно, но вот к сожалению ничего не работает, скрипт уходит как я понял в долгий запрос
хотя результат массива одинаковый
print_r($files); // Array ( [0] => auto [1] => news [2] => roles )
и
print_r(array('auto','news','roles')); // Array ( [0] => auto [1] => news [2] => roles )
упс, нашёл причину, если заменить это
$dir = YiiBase::getPathOfAlias('application.modules');
на это
$dir = 'C:\wamp\www\mysite\protected\modules';
то всё будет в порядке
а ещё наверное лучше заменить на это
$dir = dirname(dirname(__FILE__)).'/modules';
наверное это будет более универсально, для указания пути автоматически и не прописывая в ручную
Если кому будет интересно, то вот полностью код файла \protected\config\modules.php
<?php
$dir = dirname(dirname(__FILE__)).'/modules';
$dh = opendir($dir);
$files = array();
while (false !== ($filename = readdir($dh)))
{
if ($filename != '.' && $filename != '..')
{
if (is_dir($dir.'/'.$filename))
{
$files[] = $filename;
}
}
}
return $files;