2014-05-18 2 views
0
$tpl = new Smarty(); 
$tpl->configLoad('compose.conf'); 
$config = $tpl->getConfigVars(); 
print_r($config); 

возвращаетЗачем печатать конфигурационный массив дает пустой массив?

Array() 

Что это, я делаю неправильно?

compose.conf

[jquery] 
jquery = lib/jquery/jquery.js 

[jquery_validate] 
css=res/css/jquery.validate.css 
js=lib/jquery/jquery.validate.js 
X=jquery 


[bootstrap_css] 
main = lib/bootstrap/css/bootstrap.min.css 
theme = lib/ootstrap-theme.min.css 

[bootstrap_js] 
js = lib/bootstrap/js/bootstrap.min.js 
X=jquery 

[bootstrap] 
X=bootstrap_css,bootstrap_js 

[utils] 
utils=lib/utils/utils.js 
odo=lib/utils/utils.odo.js 
require=libutils/utils.require.js 
template=lib/utils/utils.template.js 
X=jquery 
+1

Что 'compose.conf' содержит? – mbanzon

+0

Он содержит конфиг vars, см. Edit. – LNT

+0

Есть ли что-нибудь в журналах ошибок?Может быть, вы хотите называть 'config_load' вместо' configLoad'? – mbanzon

ответ

1

В ваших Smarty плагинов каталог smarty_internal_config.php поиск даного

if (!empty($sections)) { 

Заменим теперь это утверждение

if($sections=='*'){ 
     foreach ($_config_vars['sections'] as $key=>$value) { 
      if (isset($value['vars'])) { 
       $scope_ptr->config_vars[$key] = $value['vars']; 
      } 
     } 
    } else if (!empty($sections)) { 

и время Загрузите файл, используя его так:

$tpl = new Smarty(); 
$tpl->configLoad('compose.conf','*'); 
$config = $tpl->getConfigVars(); 
print_r($config); 

Вот это :)

1

Согласно руководству по parse_ini_file:

Примечание: Там резервируются слова, которые не должны быть использованы в качестве ключей для ини-файлов. К ним относятся: null, yes, no, true, false >>>on < < <, off, none. Значения null, off, no и false результат "". Значения on, yes и true результат "1". Символы ?{}|&~![()^" не должны использоваться в любом месте ключа и иметь специальное значение в значении.

Если попытаться выполнить parse_ini_file (или parse_ini_string) на файле we get the following error:

Предупреждение: ошибка синтаксиса, неожиданный BOOL_TRUE в Unknown в строке 7 в/TMP/execpad-e67cf6f095ae/source-e67cf6f095ae на линии 32

Следовательно, Smarty получает ошибку (я предполагаю, что она использует одну из этих функций внутри) при попытке проанализируйте свой файл INI, потому что вы используете зарезервированное слово. Решение состоит в том, чтобы просто переименовать ON в нечто другое.

Update:

Smarty не использует эти функции, но анализатор повторяет его. Строка # 313 smarty_internal_configfilelexer.php относится к "on":

if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))) { 
//                         ^^ 
+1

попробовал его с X, все еще не работает – LNT

+0

@LNT Осталось еще один под 'bootstrap_js':' ON = jquery' – h2ooooooo

+1

извините, удалены все в реальном коде, без успеха. – LNT

Смежные вопросы