Symfony2,Doctrine,MongoDb:无法将查询结果传递给view

时间:2013-07-10 05:12:46

标签: mongodb symfony doctrine-orm twig odm

我正在尝试通过Symfony文档手册中的DoctrineMongoDBBundle教程。我已经创建了测试“产品”集合,并且能够毫无问题地插入其中,但是,我似乎无法从中读回来。或者至少,我无法在我看来打印任何结果。

SymfonyProfiler显示正在执行查询。但是,我的屏幕上没有任何内容。如果我没有在视图中注释掉我的foreach循环,那么工具栏甚至都不显示。

控制器代码:

/**
* @route("/dbReadTest2/{id}")
* @Template()
*/
public function showAction()
{
    $repository = $this->get('doctrine_mongodb')
        ->getManager()
        ->getRepository('AcmeStoreBundle:Product');

    $products = $repository->findAll();

    return $this->render('AcmeStoreBundle:Default:index.html.twig', array(
        'products' => $products,
    ));
}

查看代码:

{% if products.count %}
  In if Block
  <ul>
  {% for product in products %}
    In For Loop
    <li>{{ product.name }} </li>
  {% endfor %}
  </ul>
{% else %}
    <p>. There are no products yet!</p>
{% endif %}
<p>End of Page</p>

加载后我得到的唯一输出是“In If Block”。没有其他评论出现。

谢谢!

2 个答案:

答案 0 :(得分:0)

我以这种方式与学说合作:

控制器:

$products = $this->getDoctrine()->getRepository("AcmeStoreBundle:Product")->findProducts();

ProductRepository:

class GalleryRepository extends EntityRepository
{
     public function findProducts(){
          return $this->getEntityManager()->getRepository("TLWEntitiesBundle:Product")->findAll();
     }
}

其余代码似乎没问题。

答案 1 :(得分:0)

@ user2566987

1)肯定你的代码在twig中访问传递的$ products变量是错误的。我没有足够的时间为您编码,但我可以引导您找到解决方案 2)用{{ dump(products) }}替换视图中的所有代码,然后重新加载页面,您将看到所有数据从那里决定它们是php数据对象还是php数据数组,并使用适当的语法输出它们。 3)如果类不存在,则无法访问类的属性字段,例如count类产品的私有成员。我没有在链接教程MSDN

中看到它

我希望它有所帮助。