2017-03-10 4 views
1

私は数日間このままでした!フォームデータをデータベースに保存できますが、そのデータを表示するためにそのデータを取得することはできません。私はいつも、500 Internal Server Error - Twig_Error_Runtime(変数 "リポジトリ"は存在しません)を取得します。ここに私のコントローラがあります:Symfony 3エラー:変数「リポジトリ」が存在しません

class FormController extends Controller 
{ 
    /** 
    * @Route("/", name="homepage") 
    */ 
    public function indexAction(Request $request) 
    { 
     // create a message instance 
     $message = new Message(); 

     //assign some placeholder data 
     $message->setName('Billy'); 
     $message->setAddy('[email protected]'); 
     $message->setSubject('Notice'); 
     $message->setBody('Practice Delayed'); 

     //method creates and renders form 
     $form = $this->createFormBuilder($message) 
      ->add('name', TextType::class) 
      ->add('addy', TextType::class) 
      ->add('subject', TextType::class) 
      ->add('body', TextType::class) 
      ->add('save', SubmitType::class, array('label' => 'Send', 'attr' => array('class' => 'btn btn-danger btn-lg'))) 
      ->getForm(); 

     //method checks if the form is submitted 
     $form->handleRequest($request); 

     //if form is submitted and data is valid... 
     if ($form->isSubmitted() && $form->isValid()) { 

      //fetch data 
      $name = $form->get('name')->getData(); 
      $addy = $form->get('addy')->getData(); 
      $subject = $form->get('subject')->getData(); 
      $body = $form->get('body')->getData(); 

      //set data 
      $message->setName($name); 
      $message->setAddy($addy); 
      $message->setSubject($subject); 
      $message->setBody($body); 

      //entity manager 
      $em = $this->getDoctrine()->getManager(); 
      $repository = $em->getRepository('AppBundle:Message')->findAll(); 
      $em->persist($message); 
      $em->flush(); 

      if (!$repository) { 
       throw $this->createNotFoundException(
        'No messages' 
       ); 
      } 
      return $this->render('default/output.html.twig', array('form' => $form->createView(), 
      )); 
     } 

     return $this->render('default/index.html.twig', array('form' => $form->createView(), 
     )); 
    } 

ここで素晴らしい作品と私​​は、データベースにデータを保存することができます私のindex.html.twigファイル、です:

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

{% block body %} 
      {% block form_row %} 
      {% spaceless %} 
       <div id="wrapper"> 
        <div id="container"> 
         <div class="form_row"> 
          {{ form(form) }} 
         </div> 
        </div> 
       </div> 
      {% endspaceless %} 
     {% endblock form_row %} 
{% endblock %} 

は、しかし、ここで私のoutput.html.twigファイルです、どの

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

    {% block body %} 
     <table class="table table-striped"> 
      <thead> 
      <tr> 
       <th>Genus</th> 
       <th># of species</th> 
      </tr> 
      </thead> 
      <tbody> 
       {% for key in repository %} 
        <tr> 
         <td>{{ key.id }}</td> 
         <td>{{ key.name }}</td> 
         <td>{{ key.addy }}</td> 
         <td>{{ key.subject }}</td> 
         <td>{{ key.body }}</td> 
        </tr> 
       {% endfor %} 
      </tbody> 
     </table> 
    {% endblock %} 

答えて

1

あなたの小枝テンプレートにリポジトリ変数を与える必要があります:私がクリックして「送信」エラーが発生します。 例:

return $this->render('default/index.html.twig', array('form' => $form->createView(), 'repository' => $repository)); 
+0

omgは完璧に機能しました。あなたは私のお尻を保存し、私の一日を作った!ありがとうございました! – bigmammoo

関連する問題