在bundle之前修改request



我有一个symfony网站与许多页面,如

/page1
/page2
/page3/something/
etc...

在那些书页里,我有很多次提到"漂亮"这个词

我希望页面/dummy/page1返回与/page1完全相同的结果,但将所有出现的单词"pretty"替换为单词"beautiful"。其他页面也一样:/dummy/url应该总是和/url完全一样,但是用"beautiful"代替"pretty"

我找到了一个简单的方法来做到这一点:在app.php中,我在最开始添加:

if (strpos($_SERVER['REQUEST_URI'], '/dummy') !== false) {
      $_SERVER['REQUEST_URI'] = str_replace('/dummy','',$_SERVER['REQUEST_URI']);
      ob_start(replaceHTML($final_html))
}

然后直接

public function replaceHTML($html) {
     return str_replace('pretty','beautiful',$html);
}

效果很好。

现在我需要把它做成一个bundle来共享。

问题是bundle的实例化似乎太晚了,这意味着在请求被处理之后,更改$_SERVER['REQUEST_URI']在这一点上没有做任何事情,并且所有的/dummy/url请求返回404。

你知道我如何使用一个bundle来复制这个吗?

尝试为该页创建2个路由:

/**
 * @Route("/dummy/page1", name="route_dummy_1")
 * @Route("/page1", name="route_1")
 */
public function indexAction(Request $request)
{
 ...
}

最新更新