2017-03-27 28 views
0

我是Symfony框架的新手。我在從數據庫中提取數據時遇到一些困難。這裏是我的控制器類: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->時,我試圖從建議列表中找到getDoctrine(),但是我沒有選擇,因此我手動輸入了它們,我不確定這是否會導致任何問題,因爲顯然我的代碼現在有一些錯誤。

裏面我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 %} 

不過,我收到錯誤消息稱variable 'locations' does not exist和錯誤在重點介紹了在樹枝循環。我一直在研究從數據庫獲取數據的其他方式,並且所有這些方法都以相同的方式進行。

我不知道爲什麼會這樣。有任何想法嗎?提前致謝。

修訂

在我DefaultController類,我有這些:

class DefaultController extends Controller 
{ 
    /** 
    * @Template("AppBundle:Default:index.html.twig") 
    * @Route("/", name="homepage") 
    */ 
    public function indexAction(Request $request) 
    { 
     return array(); 
    } 
} 

現在的問題是,動作不是調用CrisisCtrl類。它現在正在執行上面的功能。我不允許觸摸這個功能,因爲如果我改變它,其他功能將會發生故障。

所以在我CrisisCtrl班,之前的listAction,我添加了這些:

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

我的文件結構,例如:

enter image description here

和我的JavaScript嵌套在裏面的index.html 。枝條。所以我想知道我該如何指定路線?

+0

如果您在控制器中執行'dump($ locations)'(在'return'之前),您會得到任何結果嗎?另外,您正在使用哪個版本的Symfony? – tftd

+0

導致錯誤的確切線是什麼? @tftd是正確的,請嘗試檢查$位置中的內容 - var_dump($ locations)或至少執行count($ locations)。 –

+0

我正在使用symphony 3.2.6。我如何檢查轉儲?對不起,我是Symfony的新手,仍然試圖熟悉它:)頁面底部有一個類似於工具欄的菜單,它顯示一個錯誤,這是我在上面提到的錯誤 – guest176969

回答

0

從symfony的控制器,你應該使用

$this->getDoctrine()->getManager()->getRepository() 
+0

不行不行。但這是否正常,因爲在輸入 - >後沒有從建議列表中看到getDoctrine()。我看了一個視頻教程,然後他們輸入 - > – guest176969

+0

你擴展了什麼控制器類?這是你應該使用Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller; –

+0

是的,我正在使用那個。 – guest176969

0

變化

class CrisisCtrl extends Controller{ 

class CrisisController extends Controller{ 

你不能兩個控制器使用相同的路徑名。所以,刪除

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

從默認控制器。