我对使用Symfony 2进行PHP开发很新,所以我使用“Symfony Blog”示例作为新的简单应用程序的基础,以便尝试我学到的东西。
我已经定义了这个规则:
AhorrarMainBundle_cuenta:
pattern: /cuenta/{id}
defaults: { _controller: AhorrarMainBundle:Cuenta:cuenta }
requirements:
_method: GET
id: \d+
所以我希望当我在浏览器中写下这个地址(ahorro / app_dev / cuenta / 1)时,会启动“cuentaAction”传递数字1作为参数。
这是我用作布局的树枝模板的代码:
{% block navigation %}
<nav>
<ul class="navigation">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="{{ path('AhorrarMainBundle_cuenta', {'id': id}) }}">Cuenta</a></li>
<li><a href="{{ path('AhorrarMainBundle_movimientos') }}">Movimientos</a></li>
</ul>
</nav>
{% endblock %}
这是调用“ahorro / app_dev / cuenta / 1”时启动的页面代码:
{% extends "AhorrarMainBundle::base.html.twig" %}
{% block title %}Cuenta{% endblock%}
{% block body %}
<header>
<h1>Cuenta symAhorro</h1>
</header>
{% endblock %}
实际上,这只是一个我希望展示的简单页面,仅此而已。但当我尝试访问任何页面时,我收到此错误:
![错误图片] http://imageshack.com/a/img837/1190/dg53.jpg
EDITED 这是我用作控制器的类:
class CuentaController extends Controller{
public function indexAction()
{
return $this->render('AhorrarMainBundle:MainPage:index.html.twig');
}
public function cuentaAction($id)
{
$em = $this->getDoctrine()->getManager();
$cuenta = $em->getRepository('AhorrarMainBundle:Cuenta')->find($id);
if (!$cuenta) {
throw $this->createNotFoundException('Unable to find Blog post.');
}
return $this->render('AhorrarMainBundle:Cuenta:cuenta.html.twig', array(
'cuenta' => $cuenta,
));
}
}
所以似乎问题是“id”变量不存在,但我认为我遵循了“Symfony书”关于论点的说法......
任何人都可以帮我说我该怎么做?或者我在哪里可以找到一个有效的例子?
提前致谢。
答案 0 :(得分:1)
如果您没有在控制器中专门指定模板变量,则它不会自动存在。
您可以通过默认请求变量获取名为“id”的请求参数:
app.request.get( 'id' )
或者如果您想在多个地方使用它,请自行分配变量:
{% set id = app.request.get( 'id' ) %}
答案 1 :(得分:0)
hpoeri评论的是解决您问题的方法。
另一个(通常是首选的)是将$id
变量从控制器返回到视图,因为这基本上是控制器和视图之间的分离。因此,您的控制器中的返回语句应为:
return $this->render('AhorrarMainBundle:Cuenta:cuenta.html.twig', array(
'cuenta' => $cuenta,
'id' => $id
));
您在返回的数组中传递的所有变量都可在您的视图中使用。
在这里查看Symfony2文档,特别是“渲染模板”一节 http://symfony.com/doc/current/book/controller.html#rendering-templates 以及关于“视图”的部分,它解释了变量处理在这里更好一些: http://symfony.com/doc/current/quick_tour/the_view.html