Drupal 8 Url Alter с processOutbound и preg_replace

Я работаю на веб-сайте Drupal, где мне нужно изменить все URL-адреса, содержащие «member», на «follower».

Пример:

  • www.site.com/member ====> www.site.com/follower
  • www.site.com/members ====> www.site.com/followers
  • www.site.com/members/1/info ====> www.site.com/followers/1/info
  • www.site.com/something/member ====> www.site.com/something/follower

и т.п.

Я перепробовал несколько вещей, которые не работали, и затем я узнал о processOutbound, который, кажется, является правильным способом замены «member» на «follower» во всех моих URL.

Но это не работает ни. Не могли бы вы, ребята, помочь мне решить эту проблему?

Пожалуйста, найдите код моего класса ниже.

class SquarePathProcessor implements InboundPathProcessorInterface, OutboundPathProcessorInterface {

public function processInbound($path, Request $request) {

return $path;
}

public function processOutbound($path, &$options = array(), Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL) {
return preg_replace('@^/member(.*)@', '/follower$1', $path);
}
}

0

Решение

Я это сделал !!! Вот решение:

class SquarePathProcessor implements InboundPathProcessorInterface, OutboundPathProcessorInterface {

public function processInbound($path, Request $request) {
if (strpos($path, '/follower') === 0) {
$path = preg_replace('#^/follower#', '/member', $path);
}
return $path;
}

public function processOutbound($path, &$options = array(), Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL) {
if (strpos($path, '/member') === 0) {
$path = preg_replace('#^/member#', '/follower', $path);
}
return $path;
}

}

Спасибо вам всем

1

Другие решения

Других решений пока нет …