@@ -91,34 +91,43 @@ public function generatePath($route, ?string $locale = null, $site = null): stri
9191 return $ this ->generateUrl ($ route , $ locale , $ site , UrlGeneratorInterface::ABSOLUTE_PATH );
9292 }
9393
94+ public function generateUrlForContent ($ content , string $ locale , $ site = null ): string
95+ {
96+ foreach ($ content ->getRoutes () as $ route ) {
97+ if ($ route ->getPathForLocale ($ locale )) {
98+ return $ this ->generateUrl ($ route , $ locale , $ site );
99+ }
100+ }
101+
102+ return '# ' ;
103+ }
104+
94105 public function generateUrl ($ route , ?string $ locale = null , $ site = null , int $ referenceType = UrlGeneratorInterface::ABSOLUTE_URL ): string
95106 {
96107 if (is_null ($ route )) {
97108 return '# ' ;
98109 }
99110
100- if (is_array ($ route )) {
101- if (is_null ($ route ['route_name ' ])) {
102- return '# ' ;
103- }
111+ $ params = [];
112+ $ params ['_locale ' ] = $ locale ?: ($ this ->requestStack ->getCurrentRequest ()?->getLocale() ?: 'en ' );
104113
105- $ params = $ route ['route_params ' ] ?? [];
114+ if ($ site ) {
115+ $ params ['_site ' ] = $ site ;
116+ }
106117
107- $ params [ ' _locale ' ] = $ locale ?: ( $ this -> requestStack -> getCurrentRequest ()?->getLocale() ?: ' en ' ) ;
118+ $ routeName = $ route ;
108119
109- if ($ site ) {
110- $ params ['_site ' ] = $ site ;
120+ if (is_array ($ route )) {
121+ if (is_null ($ route ['route_name ' ])) {
122+ return '# ' ;
111123 }
112124
113- return $ this ->router ->generate ($ route ['route_name ' ], $ params , $ referenceType );
125+ $ params = array_merge ($ params , $ route ['route_params ' ] ?? []);
126+ $ routeName = $ route ['route_name ' ];
114127 } elseif ($ route instanceof RouteInterface) {
115- return $ this -> router -> generate ( $ route ->getId (), [], $ referenceType );
128+ $ routeName = $ route ->getId ();
116129 }
117130
118- $ params = [
119- '_locale ' => $ locale ?: ($ this ->requestStack ->getCurrentRequest ()?->getLocale() ?: 'en ' ),
120- ];
121-
122- return $ this ->router ->generate ($ route , $ params , $ referenceType );
131+ return $ this ->router ->generate ($ routeName , $ params , $ referenceType );
123132 }
124133}
0 commit comments