Ошибка Symfony 3: переменная «хранилище» не существует

Я застрял на этом в течение нескольких дней! Я могу сохранить данные формы в базе данных, но я не могу получить эти данные для их отображения. Я всегда получаю 500 Внутренняя ошибка сервера — Twig_Error_Runtime (переменная «хранилище» не существует). Вот мой контроллер:

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

Решение

Вы должны передать переменную хранилища вашему шаблону Twig.
Например :

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]