2013-10-18 2 views
0

데이터베이스의 데이터를 표시하려고합니다.Symfony와 Doctrine - 데이터베이스의 데이터 표시

pages: 
    pattern: /pages/{id} 
    defaults: 
     _controller: DprocMainBundle:Index:show 

이 그 경로에 대한 방법입니다 :

public function showAction($id) 
    { 
     $page = $this->getDoctrine() 
      ->getRepository('DprocMainBundle:Pages') 
      ->find($id); 

     if (!$page) { 
      throw $this->createNotFoundException('No product found for id '.$id); 
     } 
     return $this->render('DprocMainBundle:Dproc:single.html.twig',array('pages' => $page)); 
    } 

인 print_r ($ 페이지) 디스플레이 : single.html에서

Dproc\MainBundle\Entity\Pages Object 
(
    [Id:protected] => 1 
    [page_title:protected] => A Foo Bar 
    [page_content:protected] => Test content for page 
    [page_category:protected] => 3dsmax 
) 

이 내 라우팅입니다. 그 정보를 표시하려고하는 나뭇 가지.

{% for page in pages %} 
    {{ page.page_title }} 
{% endfor %} 

아무 것도 보여주지 않습니다. 내가 뭘 잘못하고있는 걸까요?

+0

하나의 결과를 반복 할 수 있습니까? 'for'가없는 {{pages.page_title}}을 왜 보지 않으시겠습니까? – apoq

+0

물론 - "Dproc \ MainBundle \ Entity \ Pages"개체에 대한 메서드 "page_title"이 DprocMainBundle에 존재하지 않습니다. Dproc : single.html.twig –

+0

getter 메서드 {{page.getPageTitle}}로 수행했습니다. –

답변

0

메서드 find()은 배열이 아닌 단일 결과 만 반환합니다. findBy(array('id'=>$id))을 수행했다면 하나의 결과로 배열을 얻을 수 있습니다. 또는 하나의 결과 만있을 때 필요가 없기 때문에 템플릿에서 루프백하지 않아도됩니다. 그냥 하나 getRepository('DprocMainBundle:Pages')에 있고 다른 하나는의 (렌더링됩니다 .. 페이지에 변수 이름을 변경하고 당신은 서로 다른 두 가지 엔티티를 사용 {{ page.page_title }}

+0

변수 이름 페이지입니다. {{pages.page_title}}을 (를) 시도하면 객체 "Dproc \ MainBundle \ Entity \ Pages"에 대한 메소드 "page_title"이 DprocMainBundle에 존재하지 않습니다. Dproc : single.html.twig –

+0

page.page_title 그것은 페이지 변수가 존재하지 않는다는 것을 알려줍니다. –

+0

getter 메소드 {{page.getPageTitle}} –

0

사용 'DprocMainBundle : Dproc : single.html.twig', 배열 ('페이지'=> $ 페이지)). 동일한 엔터티를 넣어야합니다 (예 : DprocMainBundle:Pages). 나는 당신이 성공하기를 바랍니다.

0

for 루프없이 사용해보십시오. 데이터베이스의 게시물 데이터가 있으므로 다음을 시도 할 수 있습니다.

{{ pages.page_title }} 
관련 문제