Не обновляется кэш при обновлении рессурса

Здравствуйте.
Установлено дополнение Tickets.
Есть свой плагин, в котором по событию OnDocFormSave обновляется содержимое pagetitle и uri.
После обновления в таблице установлены новые значения, а при открытии раздела с тикетами, тикеты отображаются со старыми pagetitle и uri.

Вот код плагина:
switch($modx->event->name) {

	case 'OnDocFormSave':
		if ($mode == 'new' && $resource->class_key == "Ticket") {		
                    $resource->set('pagetitle', $id);
                    $resource->set('alias', $id);
                    $resource->set('uri', 'q/'.$id.'/');
                    $resource->set('uri_override', 1);
                    $resource->set('published', 1);
                    $resource->save();
	break;

}
Андрей
19 сентября 2013, 08:56
modx.pro
1 834
0

Комментарии: 8

Василий Наумкин
19 сентября 2013, 13:02
0
Надо чистить кэш родительской секции тикетов.

if ($parent = $resource->getOne('Parent')) {
	if ($parent instanceof TicketsSection) {
		$parent->clearCache();
	}
}
    Андрей
    19 сентября 2013, 13:15
    0
    Добавил твой код после $resource->save();
    Теперь вновь созданный тикет — со старыми значениями pagetitle и uri (т.е. не изменяются), а все предыдущие становятся как нужно.
    switch($modx->event->name) {
    	case 'OnDocFormSave':
    		if ($mode == 'new' && $resource->class_key == "Ticket") {		
                        $resource->set('pagetitle', $id);
                        $resource->set('alias', $id);
                        $resource->set('uri', 'q/'.$id.'/');
                        $resource->set('uri_override', 1);
                        $resource->set('published', 1);
                        $resource->save();
    
                        if ($parent = $resource->getOne('Parent')) {
                          if ($parent instanceof TicketsSection) {
                     	$parent->clearCache();
                          }
                        }
    	break;
    }
      Василий Наумкин
      19 сентября 2013, 13:17
      0
      Попробуй добавить перед сохранением.

      Я сейчас не соображу, как правильно должно быть, поэтому просто поиграйся.
      У тебя есть метод для очистки и родителя и самого тикета — это clearCache().
        Андрей
        19 сентября 2013, 18:01
        0
        Ничего не выходит — последний все-равно со старыми значениями.
    Андрей
    19 сентября 2013, 13:52
    0
    Как ни игрался, и вперед вставлял и назад, и $resource->clearCache(); добавлял — все равно последний добавленный тикет отображается со старыми значениями.
    Андрей
    24 сентября 2013, 14:33
    0
    Тестирую на «головм» сайте с установленным Tickets в проекте modx-test.com.
    Tickets поставил и настроил точно по инструкции к дополнению.
    Единственное, что настроил ЧПУ (автоматическая генерация alias с помощью translit, влючена опция friendly_urls).
    Происходит вышеописанное.
    Добавляю с помощью формы на сайте тикет, сайт переадресовывает на тикет с правильным урлом (алиас прописан верно), затем перехожу в категорию с эти тикетом, и в списке тикетов он с неправильным урлом.
    Вот сайт: s3816.modx-test.com/
    Логин s3816
    Пароль dpdcqi4xyGUX
      Андрей
      25 сентября 2013, 15:22
      0
      Проблему решил.
      А решение, как оказалось уже было засвечено на этом сайте.
      bezumkin.ru/sections/tips_and_tricks/278/
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8