@@ -31,16 +31,30 @@ class PhpcrOdmAdapter implements AdapterInterface
3131{
3232 const TAG_NO_MULTILANG = 'no-multilang ' ;
3333
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+
3444 protected $ dm ;
3545 protected $ baseRoutePath ;
3646 protected $ autoRouteFqcn ;
47+ protected $ redirectTarget = self ::REDIRECT_ROUTE ;
3748
3849 /**
3950 * @param DocumentManager $dm
4051 * @param string $routeBasePath Route path for all routes
4152 * @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/
4256 */
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 )
4458 {
4559 $ this ->dm = $ dm ;
4660 $ this ->baseRoutePath = $ routeBasePath ;
@@ -51,6 +65,7 @@ public function __construct(DocumentManager $dm, $routeBasePath, $autoRouteFqcn
5165 }
5266
5367 $ this ->autoRouteFqcn = $ autoRouteFqcn ;
68+ $ this ->redirectTarget = $ redirectTarget ;
5469 }
5570
5671 /**
@@ -154,7 +169,21 @@ public function createAutoRoute(UriContext $uriContext, $contentDocument, $autoR
154169 */
155170 public function createRedirectRoute (AutoRouteInterface $ referringAutoRoute , AutoRouteInterface $ newRoute )
156171 {
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 );
158187 $ referringAutoRoute ->setType (AutoRouteInterface::TYPE_REDIRECT );
159188 }
160189
0 commit comments