Изменение конфига плагина

Пытаюсь сделать страницу, на которой можно было бы изменить массив значений в конфигурационном файле плагина, расположенного в каталоге plugins/sport/config/config.php и содержащего один массив:
$config['sport'] = array('v1','v2','v3');
return $config;

При обработке попробовал использовать Config::Set, но ничего не произошло. Lang используется, потому что на странице настроек еще необходимо добавить русский перевод для каждого из значений массива.
if(!empty($_REQUEST))
		{
		  $res='';
		  foreach($_REQUEST as $rel)
		  {
		    $this->Lang_AddMessage($rel[0],$rel[1]);
		    $res[]=$rel[0];
		  }
		  var_dump($config['sport']);
		  Config::Set('plugin.sport.sport',$res);
		}

Или изменение конфигурационного файла иначе, как вручную, не предусмотрено?

6 комментариев

avatar
На сколько я знаю Config::Set изменят параметр на время работы движка (от запроса страницы до ее выдачи).

Тут придется использовать базу для конфигурации (как у aceAdminPanel) либо изменять сам файл конфига.
avatar
Или изменение конфигурационного файла иначе, как вручную, не предусмотрено?
Нет, не предусмотрено. Но админка это умеет.
avatar
Спасибо, разобрался.
Переделывать под базу пока слишком долго. Потом, возможно. Пока сделал изменение файла, хотя и жутко это:)
include(Config::Get('path.root.server').'/plugins/sport/config/config.php');
		$allsports = $config['sport'];
		$res='';
		foreach($allsports as $sv)
		{
		  $res["$sv"]['lang']= $this->Lang_Get($sv);
		  $res["$sv"]['ent']= $sv;
		}
		$this->Viewer_Assign('sport',$res);
		$this->Viewer_AddHtmlTitle($this->Lang_Get('pluginsport_admin'));
		$this->SetTemplate(Plugin::GetTemplatePath(__CLASS__).'admin.tpl');
		if(!empty($_REQUEST))
		{
		  $intermed='';
		  $i=0;
		  $res='<?php $config[\'sport\'] = array(\'';
		  $r2='<?php return array(\'pluginsport_admin\' => \'Настройки плагина sport\',\'';
		  foreach($_REQUEST as $rel)
		  {
		    $intermed[$i]=$rel;
		    $i++;
		  }
		  for($i=0;$i<count($intermed);$i++)
		  {
		    //$this->Lang_AddMessage($rel[0],$rel[1]);
		    if($i!=count($intermed)-1)
		    {
		      $res.=$intermed[$i][0].'\',\'';
		      $r2.=$intermed[$i][0].'\' => \''.$intermed[$i][1].'\',\'';
		    }
		    else
		    {
		      $res.=$intermed[$i][0].'\');';
		      $r2.=$intermed[$i][0].'\' => \''.$intermed[$i][1].'\');';
		    }
		  }
		  $res.='Config::Set(\'router.page.sport\', \'PluginSport_ActionSport\');return $config;?>';
		  $fp = fopen(Config::Get('path.root.server').'/plugins/sport/config/config.php', "w");
		  fputs($fp, $res);
		  fclose($fp);
		  $r2.='?>';
		  $fp = fopen(Config::Get('path.root.server').'/plugins/sport/templates/language/russian.php', "w");
		  fputs($fp, $r2);
		  fclose($fp);
		  //Config::Set('plugin.sport.sport',$res);
		}
avatar
а чем вас хранение в БД значений не устроило?
avatar
а Вы порядочный извращенец… бд же есть
avatar
Нужно ведь, чтобы в результате и языковые переменные, и настройки были отовсюду доступны стандартным путем. Позже посмотрю, как это сделано и AceAdminPanel.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.