@@ -31,16 +31,30 @@ class PhpcrOdmAdapter implements AdapterInterface
31
31
{
32
32
const TAG_NO_MULTILANG = 'no-multilang ' ;
33
33
34
+ /**
35
+ * Set the redirect target to the new auto-routes content document
36
+ */
37
+ const REDIRECT_CONTENT = 'content ' ;
38
+
39
+ /**
40
+ * Set the redirect target to the new auto-route itself.
41
+ */
42
+ const REDIRECT_ROUTE = 'route ' ;
43
+
34
44
protected $ dm ;
35
45
protected $ baseRoutePath ;
36
46
protected $ autoRouteFqcn ;
47
+ protected $ redirectTarget = self ::REDIRECT_ROUTE ;
37
48
38
49
/**
39
50
* @param DocumentManager $dm
40
51
* @param string $routeBasePath Route path for all routes
41
52
* @param string $autoRouteFqcn The FQCN of the AutoRoute document to use
53
+ * @param string $redirectTarget The target type to use when
54
+ * leaving a redirect route, either self::REDIRECT_ROUTE, or
55
+ * self::REDIRECT_CONTENT/
42
56
*/
43
- public function __construct (DocumentManager $ dm , $ routeBasePath , $ autoRouteFqcn = 'Symfony\Cmf\Bundle\RoutingAutoBundle\Model\AutoRoute ' )
57
+ public function __construct (DocumentManager $ dm , $ routeBasePath , $ autoRouteFqcn = 'Symfony\Cmf\Bundle\RoutingAutoBundle\Model\AutoRoute ' , $ redirectTarget = self :: REDIRECT_ROUTE )
44
58
{
45
59
$ this ->dm = $ dm ;
46
60
$ this ->baseRoutePath = $ routeBasePath ;
@@ -51,6 +65,7 @@ public function __construct(DocumentManager $dm, $routeBasePath, $autoRouteFqcn
51
65
}
52
66
53
67
$ this ->autoRouteFqcn = $ autoRouteFqcn ;
68
+ $ this ->redirectTarget = $ redirectTarget ;
54
69
}
55
70
56
71
/**
@@ -154,7 +169,21 @@ public function createAutoRoute(UriContext $uriContext, $contentDocument, $autoR
154
169
*/
155
170
public function createRedirectRoute (AutoRouteInterface $ referringAutoRoute , AutoRouteInterface $ newRoute )
156
171
{
157
- $ referringAutoRoute ->setRedirectTarget ($ newRoute );
172
+ switch ($ this ->redirectTarget ) {
173
+ case self ::REDIRECT_CONTENT :
174
+ $ target = $ newRoute ->getContent ();
175
+ break ;
176
+ case self ::REDIRECT_ROUTE :
177
+ $ target = $ newRoute ;
178
+ break ;
179
+ default :
180
+ throw new \RuntimeException (sprintf (
181
+ 'Unknown redirect target type "%s" ' ,
182
+ $ this ->redirectTarget
183
+ ));
184
+ }
185
+
186
+ $ referringAutoRoute ->setRedirectTarget ($ target );
158
187
$ referringAutoRoute ->setType (AutoRouteInterface::TYPE_REDIRECT );
159
188
}
160
189
0 commit comments