Php Symfony变量不存在错误消息

Php Symfony变量不存在错误消息,php,symfony,Php,Symfony,我不熟悉Symfony框架。我在从数据库中提取数据时遇到了一些困难。这是我的控制器类: class CrisisCtrl extends Controller{ public function listAction(Request $request) { $locations = $this->getDoctrine()->getRepository('AppBundle:Crisis')->findAll(); return $this->render(

我不熟悉Symfony框架。我在从数据库中提取数据时遇到了一些困难。这是我的控制器类:

class CrisisCtrl extends Controller{
public function listAction(Request $request)
{
    $locations = $this->getDoctrine()->getRepository('AppBundle:Crisis')->findAll();
    return $this->render(':index.html.twig', array(
        'locations' => $locations
    ));
}
}
我按照在线教程手动输入所有这些内容。当我键入
$this->
时,我试图从建议列表中查找
getdoctor()
,但是,我没有选择的内容,因此我手动键入了它们,我不确定这是否会导致任何问题,因为显然我的代码目前有一些错误

在我的index.html.twig中,我得到了以下信息:

{% extends 'base.html.twig' %}

{% block page_content %}
// all the HTML
{% endblock %}
{% block custom_javascripts %}
<!-- Custom Theme Scripts -->
<script src="...//removed code"
        async defer></script>

<script>
{% for location in locations %}
    var map;
    function initMap() {
        var myLatLng = {lat: '{{ location.latitude }}', lng: '{{ location.latitude }}' };
        map = new google.maps.Map(document.getElementById('map'), {
            center: myLatLng,
            zoom: 10
        });

        var marker = new google.maps.Marker({
           position: myLatLng,
           map: map,
           title: 'Hello World!'
       });
   }
{% endfor %}
</script>

{% endblock %}
现在的问题是,该操作没有调用CrisCtrl类。它现在正在执行上面的函数。我不允许触摸此功能,因为如果我更改它,其他功能将出现故障

因此,在我的CrisCtrl课程中,在listAction之前,我添加了以下内容:

 /**
 * @Template("AppBundle:Default:index.html.twig")
 * @Route("/", name="homepage")
 */
我的文件结构如下:


我的JavaScript嵌套在index.html.twig中。因此,我想知道如何实际指定路线?

从symfony controller开始,您应该使用

$this->getDoctrine()->getManager()->getRepository()
改变

不能在两个控制器中使用相同的路由名称。所以,移除

/**
 * @Template("AppBundle:Default:index.html.twig")
 * @Route("/", name="homepage")
 */

从默认控制器。

不,它不工作。但这是否正常,因为在键入->之后,我没有从建议列表中看到getDoctrine()。我看了一个视频教程,在他们键入->你扩展了什么控制器类之后,这些东西就出现了?您应该使用Symfony\Bundle\FrameworkBundle\Controller\Controller;是的,我正在使用它。您可以通过
$this->getdoctor()->getRepository()直接调用
getRepository()
方法。这不应该是问题所在-至少在较新的版本(>=3.1)中不是。在旧版本中,您必须在此之前调用管理器:)@tftd,但getDoctrine()不在建议列表中。这可能是个问题吗?因为现在错误无法找到“位置”,我在想这是否是因为控制器部分。如果您在控制器中执行
转储($locations)
(就在
返回之前),您会得到任何结果吗?另外,您使用的是哪个版本的Symfony?导致错误的确切原因是什么@tftd是正确的,请尝试检查$locations中的内容-var_dump($locations)或至少do count($locations)。我使用的是symphony 3.2.6。我怎么检查垃圾场?抱歉,我对Symfony还不熟悉,但仍在尝试熟悉它:)页面底部有一个类似工具栏的菜单,它显示一个错误,就是我上面提到的错误,只需执行var_dump($locations);模具();好的,但它显示的错误页面与之前相同。我应该在哪里追踪它?
class CrisisCtrl extends Controller{
class CrisisController extends Controller{
/**
 * @Template("AppBundle:Default:index.html.twig")
 * @Route("/", name="homepage")
 */