我是Symfony 2.7的新手,对PHP知之甚少。
我有一个系统,通过管理员创建帖子,生成新页面。
我正在尝试使用这些来创建一个显示所有当前帖子的索引页面。最终这可能只是显示标题,我应该能够调整视图但是现在我想弄清楚如何通过控制器获得帖子?
我看过Symfony演示应用程序,但看不出如何根据我的情况调整它 - 注释路由也让我感到困惑,因为我正在使用YAML。
控制器
class PostController extends Controller
{
/**
* @param Post $post
*
* @return Response
*
* @ParamConverter("post", options={"mapping": {"name": "name"}})
*/
public function viewAction(Post $post)
{
return $this->render('MyBundle:Post:view.html.twig', ['post' => $post]);
}
}
路由
my_results:
path: /results/{name}
methods: [ GET ]
defaults: { _controller: MyBundle:Post:view }
requirements:
name: \w+
到目前为止,我已经添加了额外的路由...
my_indexresults:
path: /results
methods: [ GET ]
defaults: { _controller: MyBundle:Post:index }
requirements:
name: \w+
..我已添加到控制器......
public function indexAction()
{
$post = $this->getDoctrine()->getRepository('MyBundle:Post')->findAll();
return $this->render('MyBundle:Post:index.html.twig', array('post' => $post));
}
以下是index.html.twig的相关部分,包含我将使用的帖子循环,如果我可以与控制器绑定
<!DOCTYPE html>
<html lang="en">
<head>
<title="Posts Index">
</head>
<body>
{% block content %}
{% for post in posts %}
<div id="{{ post }}">{{ post }}</div>
{% endfor %}
{% endblock %}
</body>
</html>
..但无法解决如何拉入帖子。如果可以在不看实体的情况下判断,我该怎么办呢?
答案 0 :(得分:1)
我看到你的模板期望'posts'变量,但是控制器发送'post'。将array('post' => $post));
更改为array('posts' => $post));
同时在模板中将{{ post }}
更改为{{ post.fieldName }}
。
此外,您的'my_indexresults'路线中不需要任何要求。