【发布时间】:2016-04-19 14:53:28
【问题描述】:
symfony 的路由器生成器有问题
当我跑步时
dump($this->container->get('router'));exit;
在控制器上,我的路由器上下文是这样的
#context: RequestContext {#306 ▼
-baseUrl: "/my-project/web/app_dev.php"
-pathInfo: "/accueil"
-method: "GET"
-host: "localhost"
-scheme: "http"
-httpPort: 82
-httpsPort: 443
-queryString: ""
-parameters: array:1 [▶]
}
但是相同的代码但在邮件服务上我得到了这个#context: Symfony\Component\Routing\RequestContext {#312
-baseUrl: ""
-pathInfo: "/accueil"
-method: "GET"
-host: "localhost"
-scheme: "http"
-httpPort: 80
-httpsPort: 443
-queryString: ""
-parameters: []
}
我在获得类似的网址后发现了这个问题 "http://localhost/bundleRoute/myRoute/7" 而不是 "http://localhost/my-project/web/app_dev.php/bundleRoute/myRoute/7"
谢谢。
【问题讨论】:
-
我认为这是因为我在 symfony 命令期间调用此服务所以没有请求上下文所以 symfony 路由器将创建一个新的 ` $this->context = $context ?: new RequestContext ();` 在路由器类上,因此获取空上下文是逻辑。我一直在为我的问题寻找解决方案,以便在运行控制台命令时生成 url
-
您好,我的解决方案是:调用路由器服务后获取上下文,然后将 baseUrl 设置为上下文,然后将新修改的上下文设置为路由器,最后调用生成方法,希望对您有所帮助。如果我犯了错误或有其他更好的解决方案,请告诉我。对不起我的英语不好。