【发布时间】:2015-09-29 22:51:55
【问题描述】:
试图找到解决方案,但我总是卡在文档或答案中包含其他捆绑包。在动态路由器的文档中,您可以找到提示:
“当然你也可以有几个参数,就像普通的 Symfony 路由一样。模式、默认值和要求的语义和规则与核心路由完全相同。”
就是这样。
...
/foo/{id}/bar
我尝试了(似乎没有)一切来完成它。
所有尝试都一样:
我尝试过应用变量模式和子路由。
use Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route as PhpcrRoute;
$dm = $this->get('cmf_routing.route_provider');
$route = new PhpcrRoute();
$route->setPosition( $dm->find( null, '/cms/routes' ), 'foo' );
$route->setVariablePattern('/{id}');
$dm->persist( $route );
$child = new PhpcrRoute();
$child->setPosition( $route, 'bar' );
$dm->persist( $child );
$dm->flush();
有或没有默认值和要求只有 '/foo/bar' 和 '/foo/*' 返回匹配,但 '/foo/1 /bar' 提示我“未找到“GET /foo/1/bar”的路线”。
...
刚刚我几乎完成了。
use Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route as PhpcrRoute;
$dm = $this->get('cmf_routing.route_provider');
$route = new PhpcrRoute();
$route->setPosition( $dm->find( null, '/cms/routes' ), 'example_route' );
$dm->persist( $route );
$route->setPrefix( '/cms/routes/example_route' );
$route->setPath( '/foo/{id}/bar' );
$dm->flush();
如果前缀是 '/cms/routes' 并且名称是 'foo' 一切正常。但既然我已经走到这一步了,指定一个说话的名字就会把它四舍五入。
感谢您的建议!
【问题讨论】:
-
我会感谢教程,它也显示了一些用例。我担心,像 'my_example_route' 这样的路由名称会破坏 PHPPCR 方法的优势。那么你将如何坚持像 '/foo/{id}/bar' 这样的路线?
标签: url-routing symfony-cmf doctrine-phpcr