0

在 Symfony1 中,我可以:

blog:
  url:   /blog/slug
  param: { module: blog, action: index }

在动作/控制器中,我可以使用: $request->getParameter('slug');

在 Symfony2 中:

blog:
    path:      /blog/{slug}
    defaults:  { _controller: AcmeBlogBundle:Blog:show }

我创建与 Symfony1 相同的“组件” - http://symfony.com/doc/current/book/templating.html#templating-embedding-controller

我怎样才能在嵌入控制器中获得 slug?我试过了:

$request->query->get('foo');
$request->request->get('bar');

但这仍然返回null。在 AcmeBlogBu​​ndle:Blog:show 控制器工作正常。

4

1 回答 1

2

参数转换器将使用路由中的字符串填充参数。所以这就是你的方法的样子。

class BlogController extends Controller {
    public function showAction($slug) {
        // $slug will contain the value of the string from the route
    }
}

因此,如果您想将其嵌入到 twig 模板中,它将如下所示:

{{ render( controller('AcmeBlogBundle:Blog:show', {'slug': 'this-is-the-slug' })) }}

或从另一个控制器

$this->render('AcmeBlogBundle:Blog:show.html.twig', array('slug' => 'this-is-the-slug'));
于 2013-09-26T19:33:32.363 回答