Я новичок в symfony и не знаю, как использовать переменную одного действия в другом. Может кто-нибудь дать мне детальный раствор? в первом действии я извлекаю выбранные значения формы в переменной $ manifestations.symfony2 pass form getdata для другого действия
форма
class SearchType extends AbstractType{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('manifestations', 'entity', array(
'class' => 'ProtoBundle:Manifestation',
'multiple' => true,
'required'=>false
));
}
/**
* @return string
*/
public function getName() {
return 'protobundle_manifestations';
}
}
контроллер
public function indexAction{
//....
$form = $this->createForm(new ManifSearchType(), $entity);
$manifestations = $form['manifestations']->getData();
//....
$response1 = $this->render('ProtoBundle:Invite:index.html.twig', array(
'form' => $form->createView(),
'manifestations' => $manifestations,
return $response1;
}
index.html.twig файл
{% block body %}
//....
<div id="resultats_affiches">
{% include 'ProtoBundle:Invite:results.html.twig' with
{ 'entities' : entities,
'manifestations' : manifestations,
}
%}
</div>
//....
{% endblock %}
Я хочу использовать это $ проявления переменной в другом действии, что экспорт полученных данных в файле csv:
/**
* @Route("/export/{manifestations}", name="invite_export")
*/
public function exportCsvAction($manifestations) {
$invites = $repository->searchInviteByManif($manifestations);
$response = $this->render('ProtoBundle:Invite:export.html.twig', array(
'entities' => $invites));
$response->headers->set('Content-Type', 'text/csv');
$csvfile = $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
return $csvfile;
}
затем быть в состоянии нажать на ссылку, которая перенаправляет к этому 2 действия, чтобы экспорт файла
results.html.twig файл
<a href="{{ path('invite_export', { 'manifestations': manifestations }) }}"><img height="40px" width="40px" src={{ asset('bundles/images/imprimante-icone-8350-96.png') }} ></a>
спасибо за вашу помощь!
Здравствуйте, спасибо за ответ, я изменил первое действие для передачи данных в файле twig, вы можете увидеть его сверху. и добавил этот путь в файл index.html.twig: ... мой вопрос заключается в том, как второе действие будет определять этот путь, я должен добавить его на свой маршрут, например, export/{манифестация} или где-то еще: exportCsvAction ($ manifestations)? можете ли вы просветить меня по этому вопросу? – Albee
Да. Добавьте его в маршрут и действие, как описано. Это похоже на любой другой маршрут с параметрами. – Johnny
после нажатия на ссылку , я получаю это сообщение об ошибке: Запрошенный URL /proto/web/app_dev.php/ приглашение/экспорт/Doctrine \ Common \ Collections \ ArrayCollection @ 0000000050e2e36e000000007baa7b81 не было найдено на этом сервере. у вас есть идея, как это исправить? Я обновил код вопроса вверху. что-то не так? – Albee