在Symfony中创建帖子的索引页面

时间:2017-11-13 09:49:48

标签: php symfony symfony-2.7

我是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>

..但无法解决如何拉入帖子。如果可以在不看实体的情况下判断,我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

我看到你的模板期望'posts'变量,但是控制器发送'post'。将array('post' => $post));更改为array('posts' => $post));

同时在模板中将{{ post }}更改为{{ post.fieldName }}

此外,您的'my_indexresults'路线中不需要任何要求。