在 Symfony 中创建帖子的索引页面
Creating index page of posts in Symfony
我是 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>
..但不知道如何拉入帖子。如果不看实体也能分辨,请问我该怎么做?
我看到您的模板需要 'posts' 变量,但控制器发送 'post'。将 array('post' => $post));
更改为 array('posts' => $post));
同时将模板中的 {{ post }}
更改为 {{ post.fieldName }}
。
此外,您的 'my_indexresults' 路线中不需要任何要求。
我是 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>
..但不知道如何拉入帖子。如果不看实体也能分辨,请问我该怎么做?
我看到您的模板需要 'posts' 变量,但控制器发送 'post'。将 array('post' => $post));
更改为 array('posts' => $post));
同时将模板中的 {{ post }}
更改为 {{ post.fieldName }}
。
此外,您的 'my_indexresults' 路线中不需要任何要求。