Можно ли изменять значения конфига другими значениями из него же? [решено]

Решил немного изменить плагин «Main Page» и возник один интересный вопрос. В конфиге плагина есть следующие строчки:

Config::Set('router.page.main', 'PluginMainpage_ActionMainpage');
Config::Set('router.config.action_default', 'main');

Можно ли как-то эти строки переделать, чтобы вместо main подставлялись другие значения из конфига? Т.е. я хочу добавить возможность пользователям менять адрес страницы на свой. Можно, конечно, добавить описание к каждой строке, что необходимо сделать, но так красивее будет по-моему, если это возможно.

И попутно вопрос, который и раньше интересовал: можно ли как-то условия в конфиге прописывать? Типа: если значение в конфиге такое, используем одни настройки, иначе — другие?

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

avatar
И попутно вопрос, который и раньше интересовал: можно ли как-то условия в конфиге прописывать? Типа: если значение в конфиге такое, используем одни настройки, иначе — другие?
Так как это простой php-файл то думаю можно, все зависит от условий
avatar
Можно ли как-то эти строки переделать, чтобы вместо main подставлялись другие значения из конфига? Т.е. я хочу добавить возможность пользователям менять адрес страницы на свой. Можно, конечно, добавить описание к каждой строке, что необходимо сделать, но так красивее будет по-моему, если это возможно.

// путь
$config['my_url'] = 'main';

$config['$root$']['router']['page'][$config['my_url']] = 'PluginMainpage_ActionMainpage';
$config['$root$']['router']['config']['action_default'] = $config['my_url'];


Не пишите вызовы класса Config в конфиге (как в вашем примере), есть короткий синтаксис через первый ключ "$root$" для этого. Это более красиво и логично. А то в ином случае конфиги рекурсивно крутятся для установки значений.

можно ли как-то условия в конфиге прописывать? Типа: если значение в конфиге такое, используем одни настройки, иначе — другие?
Можно, это обычный пхп файл, на лучше избегать сложных конструкций (это все таки настройка, а не код).

Но ещё смотря какое значение вы будет сравнивать в "если значение в конфиге такое": если текущего конфига или движка — ок, но если другого файла конфига этого плагина, то нет гарантии что значения будут доступны для этого конфига (грубо говоря нет порядка какой из конфигов плагина будет загружен первым из фс)
avatar
Спасибо!

Не пишите вызовы класса Config в конфиге (как в вашем примере)

С какого-то плагина было взято, как пример.

Можно, это обычный пхп файл, на лучше избегать сложных конструкций (это все таки настройка, а не код).
Но ещё смотря какое значение вы будет сравнивать...

Все без сложных конструкций и в одном конфиге. Я уже и не помню зачем мне это надо было, помню вопрос такой был. Хотя… Можно даже и к этому плагину применить:

$config['my_url'] = 'main';
$config['main_page'] = 'true';


$config['$root$']['router']['page'][$config['my_url']] = 'PluginMainpage_ActionPromopage';

if ($config['main_page'] == 'true') {
	$config['$root$']['router']['config']['action_default'] = $config['my_url'];
}

В общем, спасибо еще раз!
avatar
Все без сложных конструкций и в одном конфиге. Я уже и не помню зачем мне это надо было, помню вопрос такой был. Хотя… Можно даже и к этому плагину применить:
такой код — это нормально и можно использовать.
avatar
Ок, понял.
avatar
поменяйте заголовок на «решено» — может, кто-то задается тем же вопросом.
avatar
Появился еще вопрос: а как сюда

$this->SetTemplateAction('index');

вместо index засунуть значение конфига?

Пробовал так:

$this->SetTemplateAction('$config['page_template']');

и так:

$aPageTemplate = $config['page_template'];
$this->SetTemplateAction('$aPageTemplate');

ругается.
avatar
Упс, сам разобрался, надо так:

$aPageTemplate = Config::Get('plugin.mainpage.page_template');
$this->SetTemplateAction($aPageTemplate);
avatar
Или так:

$this->SetTemplateAction(Config::Get('plugin.mainpage.page_template'));
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.