Php 带有processOutbound和preg_replace的Drupal 8 Url更改
我在一个Drupal网站上工作,我需要将所有包含“成员”的URL更改为“追随者” 例:Php 带有processOutbound和preg_replace的Drupal 8 Url更改,php,url,drupal,drupal-8,alter,Php,Url,Drupal,Drupal 8,Alter,我在一个Drupal网站上工作,我需要将所有包含“成员”的URL更改为“追随者” 例: 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/
- 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
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);
}
}
我做到了!!!以下是解决方案:
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;
}
}
谢谢大家