我刚开始玩symfony2,我正在努力添加网址等。 当使用@Route传递其名称时,我似乎无法获取我的twig模板来获取我的函数。 有什么想法吗?
控制器:
/**
* @Route("/cube/{number}", name="get_cubed")
*/
public function indexAction($number)
{
$cube = $number * $number * $number;
return $this->render('NumberCubedBundle:Default:index.html.twig',
array('number' => $number, 'cube' => $cube)
);
}
我的Twig文件:
{% extends '::base.html.twig' %}
{% block title %}Cube Number Generator{% endblock %}
{% block body %}
{{ number }}^3 = {{ cube }}
<a href="{{ path('get_cubed', { 'number': 40 }) }}">Cube 40</a>
{% endblock %}
错误:
An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "get_cubed" as such route does not exist.") in NumberCubedBundle:Default:index.html.twig at line 5.
任何帮助都会受到大力赞赏。 感谢
答案 0 :(得分:5)
编辑:为什么注释不起作用
很可能您没有按照annotation routing和sensio framwork EXTRA bundle中的说明添加Sensio的供应商包。
默认路由机制使用路由文件(routing.yml),该文件不需要额外包。
另一方面,通过注释进行路由被认为是一个并不总是需要的附加功能,因此已被提取到单独的可选包中。您需要在路由文件中配置路由:
app/config/routing.yml
使用standard Symfony 2 routing syntax定义路线get_cubed
。
很像这样:
get_cubed:
path: /cube/{number}
defaults: { _controller: NumberCubedBundle:Default:index }
requirements:
number: \d+
现在您应该能够获得包含路线的页面:
.../app_dev.php/cube/40
答案 1 :(得分:4)
模式注释的解决方案是: 在app / config / routing.yml上添加:
tuto_produit_bundle:
resource: "@ProduitBundle/Controller/"
type: annotation
prefix: /cat
和o URL:
http://localhost/produits/Symfony/web/app_dev.php/cat/{adresse}/{route action}
like http://localhost/vente%20produits/Symfony/web/app_dev.php/cat/categorie/