Ste*_*ano 1 php routes symfony doctrine-orm
我需要有symfony 2的动态路由,其中一个slug参数被添加到url并且与数据库中的页面相关.每个页面都有一个自己的slug,其内容存储在数据库中.我阅读了高级路由一文,但它是旧版的symfony.对于新版本,似乎ParamConverter做了类似的工作.这是实现基于学说的路由的正确方法,还是应该编写真正的自定义路由器类?
我会使用ParamConverter,是的.FrameworkExtraBundle附带的默认DoctrineParamConverter可以处理大多数简单的情况 - 也就是说,它知道如何通过与路径占位符同名的字段查找类型化对象:
// routing.yml
foo_route:
pattern: /{slug}/
defaults: { _controller: FooVendorBundle:Foo:view }
// FooVendorBundle/Controller/FooController.php
public function view(FooEntity $foo)
{
// $foo will be an instance of FooEntity
}
Run Code Online (Sandbox Code Playgroud)
通常,在控制器的参数列表中,您将拥有一个$slug变量,该变量将从{slug}路径捕获的内容中填充.但是,使用ParamConverter,它会识别您正在请求一个FooEntity类,并将尝试通过捕获的slug值查找该实体,并$foo使用该实体填充该变量.
当然,默认的ParamConverter仅限于能够查找实体上实际存在的属性:如果FooEntity没有命名的字段slug,则查找将失败并抛出异常.就像我说的,这将处理大多数基本用例.如果您需要更深入地转换请求参数,您可以随时编写自己的.
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |