Как быть?

Сайт написан для нескольких языков.
Используется плагин для переключения контекстов, который написал bezumkin.

Вопрос в том, что при использовании AjaxForm запрос отправляется на site.com/assets/components/ajaxform/action.php, и таким образом не переключается контекст!
Для полей выводится ошибка: «Это поле обязательно для заполнения».
А необходимо на другом языке


// Работаем только на фронтенде и только с friendly urls
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr' || !$modx->getOption('friendly_urls')) {return;}

// Получаем запрашиваемый url
$alias = $modx->getOption('request_param_alias', null, 'alias', true);
$request = &$_REQUEST[$alias];

// Выбираем контексты с настройкой base_url
$q = $modx->newQuery('modContextSetting', array('key' => 'base_url', 'value:!=' => ''));
$q->select('context_key,value');

$contexts = array();
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
	// Учитываем наш запрос в БД
	$modx->queryTime += microtime(true) - $tstart;
	$modx->executedQueries++;
	// Разбираем результаты
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$base_url = trim($row['value'], '/');
		$context = $row['context_key'];
		// Если запрос начинается с base_url какого-то контекста
		if (preg_match('/^('.$base_url.')\//i', $request)) {
			// То переключаемся на этот контекст
			// Web инициализируется в index.php - на него переключаться не нужно
			if ($context != 'web') {
				$modx->switchContext($context);
			}
			// Вырезаем base_url из запроса, чтобы MODX нашел ресурс по uri
			$request = preg_replace('/^'.$base_url.'\//', '', $request);
			// Дело сделано - выходим из цикла
			break;
		}
	}
}
Вячеслав Серков
18 ноября 2014, 19:39
modx.pro
1 563
0

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

Николай Загумённов
19 ноября 2014, 07:45
0
У меня с этим же кодом все норм было.
    Вячеслав Серков
    19 ноября 2014, 19:26
    0
    А как у вас переключался контекст?
      Николай Загумённов
      19 ноября 2014, 22:17
      0
      Без проблем, я в шаблоне абсолютные пути задавал до css/js файлов. Чпу только должны быть включены
    Василий Наумкин
    19 ноября 2014, 10:36
    0
    В action.php не предусмотрено переключения контекстов, увы.
      Вячеслав Серков
      19 ноября 2014, 19:29
      0
      У меня стоит в .htaccess правило, чтобы правильно подключались css, img и т.д.
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(ru|en)/assets(.*)$ assets$2 [L,QSA]
        Василий Наумкин
        20 ноября 2014, 06:48
        0
        И как это поможет переключению контекста в action.php?

        Там, если что, плагины не работают, страницы не загружаются — это MODX_API_MODE.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6