понял в чем беда. нельзя надеятся на explode('_', (string)$this->request->get['path']);
так как он живет своей жизнью.
сделал так:
if (!empty($this->request->get['path'])) {
$udata = explode('_', (string)$this->request->get['path']);
$sid = (int)array_pop($udata);
}
echo '<pre>SID: ';
var_dump($sid);
echo '</pre>';
if ($sid != 190) {
if ($url[0] == 'geo_city_id') {
$this->request->get['geo_city_id'] = $url[1];
}
}
и увидел что запрос дублируется. первый раз я получаю NULL и только вторым 190.
https://prnt.sc/YBTPeYVw5Oxj
Почему это происходит - не понятно. Но теперь понимаю что единственный вариант исключить этот код:
$this->request->get['geo_city_id'] = $url[1];
для категории id 190, это только с помощью seo_url. Т.е. так:
if (strpos($this->request->get['_route_'], 'fast_buy') === false && strpos($this->request->get['_route_'], 'quick_buy') === false) {
$this->request->get['geo_city_id'] = $url[1];
}