dqypcghd381390 2017-11-13 09:49
浏览 30
已采纳

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

I am new to Symfony 2.7 and have limited knowledge of php.

I have a system whereby posts are created via the admin resulting in new pages.

I am trying to use these to create an index page showing all the current posts. Eventually this would probably just show title perhaps and i should be able to adjust the view but for now i'm trying to work out how do i get the posts to be got via the controller?

I've looked at the Symfony demo application but can't see how to adjust this to what i have - the annotation routing confuses me a little also as i am using YAML.

Controller

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]);
        }

}

Routing

my_results:
    path: /results/{name}
    methods: [ GET ]
    defaults: { _controller: MyBundle:Post:view }
    requirements:
        name: \w+

So far I have add the extra routing...

my_indexresults:
path: /results
methods: [ GET ]
defaults: { _controller: MyBundle:Post:index }
requirements:
    name: \w+

..and i have added to the controller...

public function indexAction()
{
    $post = $this->getDoctrine()->getRepository('MyBundle:Post')->findAll();

    return $this->render('MyBundle:Post:index.html.twig', array('post' => $post));
}

Below is the relevant parts of index.html.twig , containing what I would use a loop of the posts, if i could tie up with the controller

<!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>

..but can't work out how to pull in the posts. If it's possible to tell without looking at the entity, how could I do this please?

  • 写回答

1条回答 默认 最新

  • duanmu6752 2017-11-13 16:02
    关注

    I see what your template expects 'posts' variable, but controller sends 'post'. Change array('post' => $post)); to array('posts' => $post));

    Also change {{ post }} to {{ post.fieldName }} in template.

    Also u don't need any requirements in your 'my_indexresults' route.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛