<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
			<channel>
			<title>Возможен ли реврайт любого урла из плагина? / Вопросы, проблемы и их решения / Alto CMS</title>
			<link>http://79.174.14.219/comments/1371/</link>
			<description><![CDATA[Сабж. Хотел сделать возможность динамического переопределения урлов администратором. Но обращение к каким-либо классам в конфиге невозможно (надо получить список урлов),]]></description>
			<language>ru</language>
			<managingEditor>noreply@altocms.ru</managingEditor>
			<webMaster>noreply@altocms.ru</webMaster>
			<generator>Alto CMS v.1.5.0b1</generator>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24011)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24011</guid>
					<link>http://79.174.14.219/1371.html#comment24011</link>
					<author>markus1024@yandex.ru</author>
					<description><![CDATA[Возможно. Воспользуйтесь методом Config::WriteCustomConfig($aData);<br/>
Посмотрите примеры работы с данным методом в коде.]]></description>
					<pubDate>Wed, 07 Oct 2015 13:03:40 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24012)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24012</guid>
					<link>http://79.174.14.219/1371.html#comment24012</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Вижу ReadPluginConfig/WritePluginConfig. Спасибо, посмотрю.]]></description>
					<pubDate>Wed, 07 Oct 2015 13:10:15 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24013)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24013</guid>
					<link>http://79.174.14.219/1371.html#comment24013</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Если честно, результаты выглядят для меня странно. Я записываю в конфиг массив, ожидаю прочитать тот же массив, однако, получаю старый массив + новые только что записанные данные. WTF? Так и должно быть? Я смотрю с БД storage, там сериализованнные данные корректно сохраняются. Видимо, старый мусор добавляется в кеш и читается оттуда.]]></description>
					<pubDate>Wed, 07 Oct 2015 15:17:51 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24014)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24014</guid>
					<link>http://79.174.14.219/1371.html#comment24014</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Что вообще делаю:<br/>
1. Config::WritePluginConfig($sPluginName, ['webpaths' =&gt; ['foo']]);<br/>
2. Config::ReadPluginConfig($sPluginName, 'webpaths'); // [0 =&gt; foo]<br/>
3. Config::WritePluginConfig($sPluginName, ['webpaths' =&gt; ['bar']]);<br/>
4. Config::ReadPluginConfig($sPluginName, 'webpaths'); // [0 =&gt; foo, 1 =&gt; bar]]]></description>
					<pubDate>Wed, 07 Oct 2015 15:21:13 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24016)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24016</guid>
					<link>http://79.174.14.219/1371.html#comment24016</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Окей, допустим это поведение нормальное. Тогда используя Config::ResetPluginConfig($sPluginName, 'webpaths'); можно очистить <em>['webpaths' =&gt; ['foo']]</em> и записать <em>['webpaths' =&gt; ['bar']]</em>. <br/>
Но тогда сбрасываются вообще все (!) настройки, сделанные в админке. При этом, опять же, в `storage` всё на месте.]]></description>
					<pubDate>Wed, 07 Oct 2015 15:52:39 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24017)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24017</guid>
					<link>http://79.174.14.219/1371.html#comment24017</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Так, до сего момента я делал на 1.1.10, смержил 1.1.12, и словил фатальную ошибку при попытке вызвать <em>Config::ReadPluginConfig</em> из конфига плагина:<br/>
Fatal error: Class 'E' not found in /var/www/altocms/engine/classes/core/Config.class.php on line 991<br/>
Видимо, теперь этот способ не подходит.]]></description>
					<pubDate>Wed, 07 Oct 2015 16:59:59 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24025)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24025</guid>
					<link>http://79.174.14.219/1371.html#comment24025</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Вызывать эти методы до того, как загрузится ядро движка (класс Engine), нельзя, т.к. там идет обращение к базе данных, а это идет уже через модуль БД, а он вызывается через ядро.]]></description>
					<pubDate>Wed, 07 Oct 2015 22:39:57 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24028)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24028</guid>
					<link>http://79.174.14.219/1371.html#comment24028</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Ну ок, с этим понятно. Но проблема с полной очисткой конфига при очистке ключа (<em>Config::ResetPluginConfig($sPluginName, 'webpaths')</em>) это всё же проблема или нет? Я так понимаю, что там удаляется весь общий файл кеша, но почему-то не генерируется новый.]]></description>
					<pubDate>Thu, 08 Oct 2015 00:42:31 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24026)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24026</guid>
					<link>http://79.174.14.219/1371.html#comment24026</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[А что значит «динамическое переопределение»? Это нужно заново переопределять при каждом запуске?]]></description>
					<pubDate>Wed, 07 Oct 2015 22:46:14 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24027)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24027</guid>
					<link>http://79.174.14.219/1371.html#comment24027</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Ну да. Админ на специальной странице назначил в нашем плагине веб-путь для сущности. Он где-то сохраняется. Затем, при загрузке модуля, в конфиге, подгружается список этих веб-путей, по ним гененируются регулярки для <em>router.uri</em> вида <em>['[~^foo/bar$~]' =&gt; 'myaction/42', …]</em>, где в <em>myaction</em> есть ивент, который работает уже с идентификаторами урлов (42). Вот так это должно было работать по задумке.]]></description>
					<pubDate>Thu, 08 Oct 2015 00:38:06 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24036)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24036</guid>
					<link>http://79.174.14.219/1371.html#comment24036</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[На гитхабе обновлена работа с конфигом. Погонял, потестил у себя — работает все так, как ожидается. Допустим, есть плагин <strong>'test'</strong> и у него такой конфиг-файл:<br/>
<pre class="prettyprint"><code>$config['zero'] = 0;</code></pre>И мы можем получить значение конфига плагина обычным путем:<br/>
<pre class="prettyprint"><code>// Получить значение конфига плагина
Config::Get('plugin.test'); // ['zero =&gt; 0]</code></pre>Но можем так же прочитать те значения конфига плагина, которые сохранялись через <strong>Config::WritePluginConfig()</strong>:<br/>
<pre class="prettyprint"><code>// Получить значение сохраненного конфига плагина
Config::ReadPluginConfig('test'); // null</code></pre>Изначально это — <strong>null</strong>.<br/>
<br/>
<pre class="prettyprint"><code>Теперь сохраняем программно новые значения и смотрим, что имеем на выходе:
Config::WritePluginConfig('test', ['one' =&gt; 1, 'two' =&gt; 2]);
Config::Get('plugin.test'); // ['zero =&gt; 0, 'one' =&gt; 1, 'two' =&gt; 2]
Config::ReadPluginConfig('test'); // ['one' =&gt; 1, 'two' =&gt; 2]</code></pre>Т.е. обычный <strong>Config::Get()</strong> возвращает все ключи конфига, как из конфиг-файла, так и сохраненные программно, а <strong>Config::ReadPluginConfig()</strong> возвращает только программно сохраненные ключи конфига.<br/>
<br/>
Еще примеры программных манипуляций конфигом:<br/>
<pre class="prettyprint"><code>// Сброс конкретного ключа
Config::ResetPluginConfig($sPluginName, 'one');
Config::Get('plugin.test'); // ['zero =&gt; 0, 'two' =&gt; 2]
Config::ReadPluginConfig('test'); // ['two' =&gt; 2]

// Сброс всех сохраненных настроек конфига заданного плагина
// Настройки, заданные в конфиг-файле плагина не меняются
Config::ResetPluginConfig($sPluginName);
Config::Get('plugin.test'); // ['zero =&gt; 0]
Config::ReadPluginConfig('test'); // null

// Сохранение ключа 'webpaths'
Config::WritePluginConfig($sPluginName, ['webpaths' =&gt; ['foo']]);
Config::Get('plugin.test'); // ['zero =&gt; 0, 'webpaths' =&gt; ['foo']]
Config::ReadPluginConfig('test'); // ['webpaths' =&gt; ['foo']]

// Значение ключа 'webpaths' будет заменено на новый массив
Config::WritePluginConfig($sPluginName, ['webpaths' =&gt; ['bar']]);
Config::Get('plugin.test'); // ['zero =&gt; 0, 'webpaths' =&gt; ['bar']]
Config::ReadPluginConfig('test'); // ['webpaths' =&gt; ['bar']]

// Действие, аналогичное директиве config['$root$'] в конфиг-файле плагина
Config::WritePluginConfig('test3', ['$root$' =&gt; ['router.uri' =&gt; ['aaa' =&gt; 'bbb']]]);
Config::Get('plugin.test'); // ['zero =&gt; 0, 'webpaths' =&gt; ['bar']]
Config::ReadPluginConfig('test'); // ['webpaths' =&gt; ['bar'], '$root$' =&gt; ['router.uri' =&gt; ['aaa' =&gt; 'bbb']]]</code></pre>Последний пример примечателен тем, что через конфиг плагина он воздействует на общий конфиг приложения — добавляет значение в секцию <strong>'router.uri'</strong>.<br/>
<br/>
В принципе, мы могли бы воздействовать на конфиг приложения напрямую через <strong>Config::Set()</strong> или через <strong>Config::WriteCustomConfig()</strong>. Но использование <strong>Config::WritePluginConfig()</strong> является более предпочтительным и вот почему: если плагин отключается в админке, то все его настройки, которые были сделаны через <strong>Config::WritePluginConfig()</strong> также будут отключены автоматически.]]></description>
					<pubDate>Fri, 09 Oct 2015 14:35:00 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24037)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24037</guid>
					<link>http://79.174.14.219/1371.html#comment24037</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Спасибо, это как раз то, что надо. <br/>
Я попробовал сделать так, как в последнем примере:<br/>
<pre class="prettyprint"><code>Config::WritePluginConfig($sPluginName, [Config::KEY_ROOT =&gt; [
    &quot;router.uri&quot; =&gt; [
        &quot;[~^admin/about$~iu]&quot;] =&gt; &quot;feedback/1&quot;
    ]
]);
</code></pre><br/>
Затем читаю:<br/>
<pre class="prettyprint"><code>
Config::ReadPluginConfig($sPluginName);
/* Возвращает:
array(1) {
  [&quot;$root$&quot;]=&gt;
  array(1) {
    [&quot;router.uri&quot;]=&gt;
    array(1) {
      [&quot;[~^admin/about$~iu]&quot;]=&gt;
      string(10) &quot;feedback/1&quot;
    }
  }
}
*/
</code></pre><br/>
Затем вывожу Config::Get('router.uri'), но в нём нет нашего элемента.]]></description>
					<pubDate>Fri, 09 Oct 2015 16:17:57 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24038)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24038</guid>
					<link>http://79.174.14.219/1371.html#comment24038</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[И ещё перестали сохраняться какие-либо настройки в админке, ошибок в логах нет]]></description>
					<pubDate>Fri, 09 Oct 2015 16:38:41 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24041)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24041</guid>
					<link>http://79.174.14.219/1371.html#comment24041</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[fix — <a href="https://github.com/altocms/altocms/commit/7e5395c6db2ff4fa2688264d185267b7cae2bc17" rel="nofollow" >github.com/altocms/altocms/commit/7e5395c6db2ff4fa2688264d185267b7cae2bc17</a>]]></description>
					<pubDate>Fri, 09 Oct 2015 18:21:33 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24039)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24039</guid>
					<link>http://79.174.14.219/1371.html#comment24039</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Забыл отметить нюанс: при использовании '$roor$' эффект будет при следующей загрузке страницы]]></description>
					<pubDate>Fri, 09 Oct 2015 17:11:01 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24040)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24040</guid>
					<link>http://79.174.14.219/1371.html#comment24040</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[В экшне плагина в админке записывается, а в конфиге плагина выводится<br/>
<pre class="prettyprint"><code>$aConfigWebpaths = Config::ReadPluginConfig('feedback');
var_dump(Config::Get('router.uri'), $aConfigWebpaths);
</code></pre><br/>
Внутри aConfigWebpaths:<br/>
<pre class="prettyprint"><code>array(1) {
  [&quot;_db_&quot;]=&gt;
  bool(false)
}</code></pre>]]></description>
					<pubDate>Fri, 09 Oct 2015 17:17:47 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24042)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24042</guid>
					<link>http://79.174.14.219/1371.html#comment24042</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Методы <strong>Config::ReadPluginConfig()</strong>/<strong>Config::WritePluginConfig()</strong> работают с базой данных, поэтому смысла нет вызывать их при до загрузки ядра. Не знаю, возможно, стоит выбрасывать исключение, когда они вызываются в неположенном месте, чтоб разработчику было понятно.<br/>
<br/>
Но если в вашем случае вызвать Config::Get('router.uri') в любом экшене, то должно вернуть верные значения. Или, например, можно повесить хук на <strong>'action_before'</strong> (он вызывается ДО того, как будет определен класс экшена для обработки URL).]]></description>
					<pubDate>Fri, 09 Oct 2015 18:32:10 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24098)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24098</guid>
					<link>http://79.174.14.219/1371.html#comment24098</link>
					<author>alto@hitagi.ru</author>
					<description><![CDATA[Желаемого результата (установка и применение правил $root$ через WritePluginConfig) смог добиться только после отключения плагина «Multiple File Upload». После повторной активации плагина, ничего не сломалось и продолжило нормально работать, хм.]]></description>
					<pubDate>Tue, 13 Oct 2015 13:30:41 +0300</pubDate>
									</item>
							<item>
					<title>Возможен ли реврайт любого урла из плагина? (comment #24107)</title>
					<guid isPermaLink="true">http://79.174.14.219/t/1371/#comment24107</guid>
					<link>http://79.174.14.219/1371.html#comment24107</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Могу предположить, что до этого было что-то некорректно записано в конфиг (либо в базу, либо в кеш), а при отключении/включении плагина конфиг перезаписался корректно и все заработало]]></description>
					<pubDate>Tue, 13 Oct 2015 23:36:38 +0300</pubDate>
									</item>
					</channel>
	</rss>
